para numeros letras convertir algoritmo c# alphabetical

c# - algoritmo para convertir numeros a letras



¿Convertir el carácter a su posición del entero del alfabeto? (5)

Aquí hay una buena implementación para leer columnas de una cadena de Excel a un número de columna. felicitaciones a @ ahmed-kraiem y @vladimir por la respuesta anterior.

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; }

Estoy tratando de encontrar si hay una forma rápida de obtener la posición entera de un carácter en el alfabeto (C #).

¿Puedo simplemente crear una matriz y obtener la posición, pero parece que debe haber una forma "agradable y original" de lograr esto?

También he considerado tomar la posición ASCII del carácter (en mayúsculas) en relación con "65" ... ¡pero, de nuevo, parece más trabajo de lo que debería ser!

[Sólo el alfabeto de 26 letras en inglés, no se requiere internacionalización, y no, ¡esto no es tarea!]


Debido a que char y int pueden combinarse y combinarse en los cálculos, puede tratar a su personaje como un número (que seguramente se ubicará entre valores conocidos):

char c = ''A''; var index = (c < 97 ? c - 64 : c - 96);


Para mayúsculas y minúsculas:

int index = (int)c % 32;


Programación 101:

char c = ''A''; //char c = ''b''; you may use lower case character. int index = char.ToUpper(c) - 64;//index == 1


Una implementación clara, legible y basada en 0 del método de @ Ahmed con verificación de límites.

/// <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''; }