Wie konvertiere ich eine Zeichenfolge in eine Ganzzahl in C #?
Wie konvertiere ich eine Zeichenfolge in eine Ganzzahl in C #?
Antworten:
Wenn Sie sicher sind, dass es korrekt analysiert wird, verwenden Sie
int.Parse(string)
Wenn nicht, verwenden Sie
int i;
bool success = int.TryParse(string, out i);
Vorsicht! Im folgenden Fall ist i
gleich 0, nicht 10 nach dem TryParse
.
int i = 10;
bool failure = int.TryParse("asdf", out i);
Dies liegt daran, dass TryParse
ein out- Parameter und kein ref- Parameter verwendet wird.
int myInt = System.Convert.ToInt32(myString);
Wie mehrere andere bereits erwähnt haben, können Sie auch int.Parse()
und verwenden int.TryParse()
.
Wenn Sie sicher sind, dass das string
immer ein int
:
int myInt = int.Parse(myString);
Wenn Sie überprüfen möchten, ob string
es sich wirklich um eine int
Premiere handelt:
int myInt;
bool isValid = int.TryParse(myString, out myInt); // the out keyword allows the method to essentially "return" a second value
if (isValid)
{
int plusOne = myInt + 1;
}
string varString = "15";
int i = int.Parse(varString);
oder
int varI;
string varString = "15";
int.TryParse(varString, out varI);
int.TryParse
ist sicherer, da Sie varString
eine Ausnahme erhalten würden, wenn Sie etwas anderes eingeben (zum Beispiel "fsfdsfs"). Wenn Sie verwenden, int.TryParse
wenn der String nicht in int konvertiert werden kann, wird er zurückgegeben 0
.
Wenn Sie sicher sind, dass Ihre Zeichenfolge eine "echte" Nummer enthält, oder wenn Sie mit einer möglichen Ausnahme vertraut sind, verwenden Sie diese Option.
string s="4";
int a=int.Parse(s);
Verwenden Sie für eine bessere Kontrolle über den Prozess
string s="maybe 4";
int a;
if (int.TryParse(s, out a)) {
// it's int;
}
else {
// it's no int, and there's no exception;
}
Mach so etwas wie:
var result = Int32.Parse(str);
int i;
string whatever;
//Best since no exception raised
int.TryParse(whatever, out i);
//Better use try catch on this one
i = Convert.ToInt32(whatever);
Hier werden 4 Techniken verglichen.
Der schnellste Weg war der folgende:
y = 0;
for (int i = 0; i < s.Length; i++)
y = y * 10 + (s[i] - '0');
"s" ist Ihre Zeichenfolge, die Sie in eine int konvertieren möchten. Dieser Code setzt voraus, dass Sie während der Konvertierung keine Ausnahmen haben. Wenn Sie also wissen, dass Ihre Zeichenfolgendaten immer eine Art int-Wert sind, ist der obige Code der beste Weg, um reine Geschwindigkeit zu erreichen.
Am Ende hat "y" Ihren int-Wert.
bool result = Int32.TryParse(someString, out someNumeric)
Diese Methode wird versuchen , zu konvertieren someString
in someNumeric
und Rückkehr ein result
abhängt , wenn die Konvertierung erfolgreich ist, true
wenn die Konvertierung erfolgreich ist und false
wenn die Konvertierung fehlgeschlagen. Beachten Sie, dass diese Methode keine Ausnahme auslöst, wenn die Konvertierung wie die Int32.Parse
Methode fehlgeschlagen ist und stattdessen Null für zurückgibt someNumeric
.
Weitere Informationen finden Sie hier:
https://msdn.microsoft.com/en-us/library/f02979c7(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-2
&
So konvertieren Sie Zeichenfolgen in Ganzzahl in C #