2013-02-18 2 views
0

Я пытаюсь проанализировать первые три символа строки.Проблемы синтаксического анализа строки в C#

public List<string> sortModes(List<string> allModesNonSorted) 
{ 
    foreach (string s in allModesNonSorted) 
    { 
     char firstNumber = s[0]; 
     char secondNumber = s[1]; 
     char thirdNumber = s[2]; 

     char.IsDigit(firstNumber); 
     char.IsDigit(secondNumber); 
     char.IsDigit(thirdNumber); 

     combinedNumbers = Convert.ToInt16(firstNumber) + Convert.ToInt16(secondNumber) + Convert.ToInt16(thirdNumber); 
    } 
    return allModesNonSorted; 
} 

Он распознает каждый символ правильно, но добавляет дополнительную ценность 53 или 55. Ниже, когда я добавить цифры, то 53 и 55 включены. Почему это так?

+5

Это не «добавление» дополнительных значений. Первые два символа строки: «5» и «7», которые имеют значения Unicode 53 и 55. Эти значения отображаются. –

ответ

5

53 - значение Юникода '5', а 55 - значение Юникода '7'. Он показывает вам как числовые, так и символьные версии данных.

Вы заметите, что с secondNumber вы видите двоичное значение 0 и значение символа '\ 0'.

Если вы хотите, чтобы интерпретировать строку как целое число, вы можете использовать

int myInteger = int.Parse(myString); 

В частности, если вы знаете, всегда имеют формат

input = "999 Hz Bla bla" 

вы можете сделать что-то вроде:

int firstSeparator = input.IndexOf(' '); 
string frequency = input.Substring(firstSeparator); 
int numericFrequency = int.Parse(frequency); 

Это будет работать независимо от того, сколько цифр находится на частоте, если цифры являются следующими за счет пространственного символа.

1

Потому что вы относитесь к ним как к Персонажам.

символ «5» является последовательно 53-м символом в ASCII.

Простейшим решением является просто вычесть символ «0» из всех них, что даст вам числовое значение одного символа.

2

53 это значение ASCII для символа «5» 57 это значение ASCII для символа «7»

это только Visual Studio показывает вам дополнительные сведения о фактических значений.

Вы можете продолжить использовать свой код.

1

53 и 55 - это значения ASCII символов «5» и «7» (способ сохранения символов в памяти).

Если вам нужно конвертировать их в целые числа, взгляните на this SO post.

Смежные вопросы