Преобразовать символ в целое положение алфавита?

Моя конфигурация Vim этого не делает. Вы можете попробовать скрипт python.vim, доступный по этой ссылке: http://www.vim.org/scripts/script.php?script_id=790

23
задан BlueChippy 18 November 2013 в 09:52
поделиться

5 ответов

Программирование 101:

char c = 'A';
//char c = 'b'; you may use lower case character.
int index = char.ToUpper(c) - 64;//index == 1
66
ответ дан Ahmed KRAIEM 18 November 2013 в 09:52
поделиться

Поскольку char и int могут быть смешаны и сопоставлены в вычислениях, вы можете рассматривать свой символ как число (которое наверняка попадет между известными значениями):

char c = 'A';
var index = (c < 97 ? c - 64 : c - 96);
4
ответ дан Alex 18 November 2013 в 09:52
поделиться

Четкая, удобочитаемая, основанная на 0 реализация метода @ Ахмеда с проверкой границ.

/// <summary>
/// Converts a latin character to the corresponding letter's index in the standard Latin alphabet
/// </summary>
/// <param name="value">An upper- or lower-case Latin character</param>
/// <returns>The 0-based index of the letter in the Latin alphabet</returns>
private static int GetIndexInAlphabet(char value)
{
    // Uses the uppercase character unicode code point. 'A' = U+0042 = 65, 'Z' = U+005A = 90
    char upper = char.ToUpper(value);
    if (upper < 'A' || upper > 'Z')
    {
        throw new ArgumentOutOfRangeException("value", "This method only accepts standard Latin characters.");
    }

    return (int)upper - (int)'A';
}
3
ответ дан Michael Richardson 18 November 2013 в 09:52
поделиться

Для нижнего и верхнего регистра:

int index = (int)c % 32;
34
ответ дан Soner Gönül 18 November 2013 в 09:52
поделиться

Вот хорошая реализация для чтения столбцов из строки Excel в номер столбца. Слава @ Ahmed-Kraiem & amp; @vladimir для ответа выше.

   public int AddColFromLetter(string s)
    {
        int column = 0;
        int iter = 1;
        foreach (char c in s)
        {
            int index = char.ToUpper(c) - 64;//Ahmed KRAIEM
            //int index = (int)c % 32;//Valdimir
            if(iter == 1)
                column += index;
            if(iter > 1)
                column += 25+ index;
            iter++;
        }
        return column;
    }
1
ответ дан TsTeaTime 18 November 2013 в 09:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: