2016-10-12 8 views
-3

Ich habe ein Problem, das ich nicht verstehe. Hier ist mein Code:string [0] bekomme das erste Zeichen von string

String input = "3 days ago" 
String firstCharacter = input[0].ToString(); //Returns 3 
int firstCharacter = (int)input[0]; //Returns 51 

Warum gibt es 51 zurück?

PS: Mein Code kommt aus diesem Thread: C#: how to get first char of a string?

Weitere Informationen:

In case that input = "5 days ago", then int firstCharacter is 53. 
+6

Da die '3' ist ein Zeichen mit' 51' Code. Du wirfst einen char auf einen int. Überprüfen Sie http://www.asciitable.com/ –

+0

Was versuchen Sie zu erreichen? Dies ist normales Verhalten in .NET. Sie können ein Zeichen nach int und ein int nach char umwandeln. – Alex

+0

Vielleicht 'int.TryParse' ist was du suchst? –

Antwort

4

Casting eine char zu int auf diese Weise werden Sie seine ASCII Wert, der für 3 ist gleich 51. Eine vollständige Liste finden Sie hier:

http://www.ascii-code.com/

Sie wollen etwas, wie diese stattdessen tun:

Char.GetNumericValue(input[0]); 
1

Sie auch Teilzeichenfolge verwenden kann es als Zeichenfolge anstelle eines Zeichens zu extrahieren und zu vermeiden, dass es mit würfen

 string input = "3 days ago"; 
     string sFirstCharacter = input.Substring(0, 1); 
     int nFirstCharacter = int.Parse(input.Substring(0, 1));