在C#中解析字符串时出现问题

Age*_*een 0 c# char

我试图解析字符串的前三个字符.

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;
}
Run Code Online (Sandbox Code Playgroud)

它正确识别每个字符,但增加了额外的值53或55.下面我添加数字时,包括53和55.为什么这样做?

Eri*_* J. 5

53是Unicode值'5',55是Unicode值'7'.它向您显示数据的数字和字符版本.

你会注意到secondNumber你看到二进制值0和字符值'\ 0'.

如果要将字符串解释为整数,可以使用

int myInteger = int.Parse(myString);
Run Code Online (Sandbox Code Playgroud)

特别是如果你知道你总是有格式

input = "999 Hz Bla bla"
Run Code Online (Sandbox Code Playgroud)

你可以这样做:

int firstSeparator = input.IndexOf(' ');
string frequency = input.Substring(firstSeparator);
int numericFrequency = int.Parse(frequency);
Run Code Online (Sandbox Code Playgroud)

只要数字后跟空格字符,无论频率中有多少位数,这都可以工作.