2017-02-02 6 views
1

私はこのコードを持っている:完全なコードではありませんC#で特定の文字列[index]をintに変換するにはどうすればよいですか?

string number = "124235245423523423", number2 = "3423525232332325423"; 
for(i=number.length-1;i>=0;i--){ 
int save = Convert.ToInt32(number[i]) + Convert.ToInt32(number2[i]); 
} 

を私の疑問は、なぜ私が変換し、整数として文字列の特定の指標でいくつかの値にアクセスすることはできませんでしょうか?これに直接的なアプローチはありませんか?私はいくつかのことを試みたが、うまくいかなかった。

+0

インデックスでcharを取得し、numberに変換します。 役立つリンク: http://stackoverflow.com/questions/2416894/how-to-return-the-character-which-is-at-the-index http://stackoverflow.com/questions/239103/c -Sharp-char-to-int –

+1

for(i = number.length-1; i> = 0; i--) – owairc

+1

なぜ実際の問題である 'IndexOutOfRangeException'について言及していませんか? –

答えて

2

あなたはint.Parseを探しています。

int save = int.Parse(number[3].ToString()); 

charInt32に戻り、現在の符号化におけるその文字の値を変換します。

詳細については、the MSDN documentation for Int32.Parseを参照してください。

+0

これは動作しますが、int.ParseとConvert.ToInt32は文字列を整数に変換するので、最初に文字列インデックスの文字を文字列に変換し、その上で変換メソッドまたは解析メソッドを使用することができます。理にかなう –

+0

@TalhaImam素晴らしい!答えがあなたの要件を満たしている場合は、左側の目盛りをクリックして質問に答えてもらえますか?それは将来同じことを探している他の人に役立つだろう。 – Zesty

1

私はこれがあなたが探しているものだと思います。あなたは、インデクサ値によって文字列にアクセスする必要があり、その後に変換:

int yourNumber = Convert.ToInt32(number[4].ToString()); 

これはあなたがここで

+1

これは動作しません。 'Convert.ToInt32(Char)'はシンボルコードを返します(Convert.ToInt32( "1") 'は' 1'ではなく '49'を返します)。 –

+0

右!ちょっと編集しました – NicoRiff

0

3はそれを行うための一つの方法である価値を提供します:

string number = "124235245423523423", number2 = "3423525232332325423"; 
for(int i=number.Length-1;i>=0;i--){ 
    int save = int.Parse(number[i].ToString()) + int.Parse(number2[i].ToString()); 
    Console.WriteLine(save); 
} 

Convert.ToInt32()を取得charの場合、値引数(read on MSDN)のUTF-16でコード化されたコード単位を返します。
一方、文字列を取得すると、文字列に含まれる数値が返されます。数値でない場合は例外がスローされます。

0
string number = "124235245423523423", number2 = "3423525232332325423"; 
    for(int i=number.Length-1;i>=0;i--){ 
    int sum = int.Parse(number[i].ToString()) + int.Parse(number2[i].ToString()); 
    Console.WriteLine(sum); 

working example

0

number[i]あなたはint対応に変換することができますchar型であるため、 (ほとんどの場合、一般の場合

int result = (int) char.GetNumericValue(number[i]); 

char.GetNumericValue戻りdoubleが、それは'⅜'文字(0.3753/8 corrsponds)、たとえば、のために実際のだということを、何卒ご了承下さい。あなただけ['0'..'9']範囲で動作する場合は、あなたがしなければならないすべては'0'を減算することである。

これまでのところ、あなたのコードは、おそらく

// Math.Min - number.Length and number2.Length have diffrent size 
// - 1  - strings are zero-based [0..Length - 1] 
for (i = Math.Min(number.Length, number2.Length) - 1; i >= 0; i--) { 
    int save = number[i] + number2[i] - 2 * '0'; 
    ... 
} 

あなたが右両方を合わせにしたいように実装することができ

int result = number[i] - '0'; 

文字列::あなたはforループを変更する必要があり、この場合の

number = "124235245423523423" 
    + 
number2 = "3423525232332325423" 
------------------------------ 
      354...  ...846 
for (int i = 0; i < Math.Max(number.Length, number2.Length); ++i) { 
    int sum = 
    (i < number.Length ? number[number.Length - i - 1] : '0') + 
    (i < number2.Length ? number2[number2.Length - i - 1] : '0') - 
    2 * '0'; 
    ... 
} 
0

私は特定のインデックスの値を必要に応じて、ここで私はそれをしなかったし、それは私のために素晴らしい作品方法は次のとおりです。

int number = (int)char.GetNumericValue(number[index]) 

私が実際にやったことは、私は必要なインデックスで文字を変換することです最初の2つのGetNumericValueメソッドに渡してから、そのdoubleを整数に変換します。

関連する問題