2017-02-02 1 views
1

Ich habe diesen Code:Wie konvertiert man einen bestimmten String [index] in C# in int?

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

Das ist nicht der vollständige Code ist aber meine Frage ist, warum kann ich nicht konvertieren und einen Wert zu einem bestimmten Index eines als Integer-String zugreifen? Gibt es dafür keinen direkten Ansatz? Ich habe einige Dinge ausprobiert, aber es hat nicht geklappt.

+0

Holen Sie sich das Zeichen nach Index und konvertieren Sie es dann in Nummer. Hilfreiche Links: 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

für (i = number.length-1; i> = 0; i--) – owairc

+1

Warum haben Sie nicht das eigentliche Problem, die 'IndexOutOfRangeException' erwähnt? –

Antwort

2

Sie suchen nach int.Parse.

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

Umwandeln einer char zu Int32 kehrt der Wert dieses Zeichens in der aktuellen Codierung.

Weitere Informationen finden Sie unter the MSDN documentation for Int32.Parse.

+0

Dies funktioniert, ich verstehe, dass seit int.Parse und Convert.ToInt32 konvertiert eine Zeichenfolge zu Integer, können wir zuerst ein Zeichen in einem String-Index in eine Zeichenfolge und dann die Konvertierung oder Parsing Methoden über sie konvertieren. Macht Sinn –

+0

@TalhaImam Großartig! Wenn die Antwort Ihren Anforderungen entspricht, können Sie bitte auf das Häkchen auf der linken Seite klicken, um es als Antwort auf Ihre Frage zu akzeptieren? Das wird anderen Menschen helfen, die in Zukunft dasselbe suchen. – Zesty

1

Ich denke, dass das ist, was Sie suchen. Sie haben die Zeichenfolge durch den Indexer Wert zuzugreifen und wandeln dann:

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

Diese geben Sie 3 Wert

+1

Es wird nicht funktionieren. "Convert.ToInt32 (Char)" gibt den Symbolcode zurück (d. H. "Convert.ToInt32 (" 1 ")" gibt "49" und nicht "1" zurück). –

+0

Richtig !. Just edited – NicoRiff

0

Hier ist eine Möglichkeit, es zu tun:

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

Wenn Convert.ToInt32() ein bekommt char, gibt es die UTF-16-codierte Codeeinheit des Wertarguments zurück (read on MSDN).
Auf der anderen Seite, wenn es eine Zeichenfolge erhält, gibt es die Nummer zurück, die die Zeichenfolge enthält, oder löst eine Ausnahme aus, wenn es sich nicht um eine Zahl handelt.

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

Nun, da number[i] vom Typ char Sie es in entsprechende int umwandeln kann entweder durch (die meisten allgemeinen Fall)

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

Bitte beachten Sie, dass char.GetNumericValue kehrt double, es tatsächlich ist für, sagen wir, '⅜' Charakter (3/8 corrsponds zu 0.375); oder wenn Sie mit ['0'..'9'] Bereich nur funktionieren, alles, was Sie tun müssen, ist '0' zu subtrahieren:

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

Bisher Ihr Code kann als

// 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'; 
    ... 
} 

implementiert werden wahrscheinlich wollen Sie rechts ausrichten sowohl Strings:

number = "124235245423523423" 
    + 
number2 = "3423525232332325423" 
------------------------------ 
      354...  ...846 

in diesem Fall, dass Sie for Schleife zu ändern haben:

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

brauchte ich einen Wert in einem bestimmten Index, hier bin, wie ich es tat, und es funktioniert wunderbar für mich:

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

Was ich tat, ist eigentlich, dass ich das Zeichen an dem Index umgewandelt i benötigt in eine doppelte erste GetNumericValue-Methode und dann habe ich dieses Double in eine ganze Zahl umgewandelt.

Verwandte Themen