0

文字列の最初の3文字を解析しようとしています。

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が含まれます。なんでこんなことするの?

4

4 に答える 4

5

53は「5」のUnicode値であり、55は「7」のUnicode値です。データの数値バージョンと文字バージョンの両方が表示されます。

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

これは、数字の後にスペース文字が続く限り、頻度にいくつの数字があっても機能します。

于 2013-02-18T19:53:13.703 に答える
2

53は文字「5」のASCII値です。57は文字「7」のASCII値です。

これは、実際の値に関する追加の詳細を表示するVisualStudioです。

コードを続行できます。

于 2013-02-18T19:55:24.780 に答える
1

53および55は、「5」および「7」文字(文字がメモリーに保管される方法)のASCII値です。

それらを整数に変換する必要がある場合は、このSO投稿を参照してください。

于 2013-02-18T19:55:56.180 に答える
1

あなたはそれらをキャラクターとして扱っているからです。

文字「5」は、ASCIIの53番目の文字です。

最も簡単な解決策は、それらすべてから文字「0」を引くだけです。これにより、1つの文字の数値が得られます。

于 2013-02-18T19:53:55.823 に答える