2017-02-02 47 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,然後將其轉換爲數字。 有用的鏈接: 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()); 

這會給你的價值3

+1

它將無法正常工作。 'Convert.ToInt32(Char)'返回符號代碼(即'Convert.ToInt32(「1」)'''49'',而不是'1')。 –

+0

對!剛剛編輯 – NicoRiff

0

下面是做到這一點的一種方法:

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,它將返回值參數的UTF-16編碼代碼單元(read on MSDN)。
另一方面,當它得到一個字符串時,它返回字符串包含的數字,或者如果它不是數字,則會引發異常。

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]的類型是char你可以將其轉換成相應的int (最多一般情況下

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

請注意,這char.GetNumericValue回報double,它是實際的,比如說,'⅜'字符(3/8 corrsponds到0.375);或者如果你只['0'..'9']範圍內工作,所有你需要做的就是減去'0'

int result = number[i] - '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'; 
    ... 
} 

可能要右對齊兩字符串:

number = "124235245423523423" 
    + 
number2 = "3423525232332325423" 
------------------------------ 
      354...  ...846 
在這種情況下,你必須修改 for循環

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

我實際做的是,我轉換角色,我需要的索引首先通過GetNumericValue方法將其轉換爲double,然後將該double轉換爲整數。