2017-09-21 8 views
-1

C#コンソールアプリケーションでは、intを文字列に変換してから新しい文字列の文字をチェックし、intに変換したいと考えています。C#:intを文字列に変換し、文字列内の文字を確認する

int charNum = 0; 
    int value = 111 
    string valueStr = value.ToString(); 
    int numVariant = valueStr.ToCharArray()[charNum]; 

は、その後、私はそれらの値を出力する

Console.WriteLine(numVariant + " " + valueStr + " " + charNum); 
    Console.ReadLine(); 

これを追加して、妙にそれは私がそれを期待したもの一方

49 111 0 

を返します。これは私がそれを行うために、これまで持っているものです返品は

1 111 0 

それで、私は、何かがintにcharを変換することに間違っていたと思います、これを修正する方法に関する提案?

+0

'int型numVariant = valueStr.ToCharArray()[charNum] - '0'; [#なぜこの戻り49がないCの' –

+0

が重複する可能性:変換を。 ToInt32( '1')](https://stackoverflow.com/questions/3665978/c-sharp-why-does-this-return-49-convert-toint321) – Naman

答えて

1

49のASCII値をとる1のASCII 10進値」の文字です。これは、値をint32に代入しているためにコンパイラが値を自動的にキャストしているためです。単に変更:

int numVariant = valueStr.ToCharArray()[charNum]; 

へ:

char numVariant = valueStr.ToCharArray()[charNum]; 
+0

それは働いた!本当にありがとう :) – User2935

1

int numVariant = int.Parse(valueStr[charNum].ToString());

int numVariant = valueStr.ToCharArray()[charNum]; を交換してそれ以外の場合は、1

+0

これは完全に機能しましたが、私の仕事は、char値では、より良いでしょう、感謝のための束にもかかわらず:) – User2935

+0

多分、あなたの質問は、あなたはそれを 'int'に戻したいと言います。 –

+0

ええ、それは私の悪かった、それについてはごめんね – User2935

関連する問題