So konvertieren Sie Zeichenfolgen in Ganzzahlen in C #


Antworten:


134

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 igleich 0, nicht 10 nach dem TryParse.

int i = 10;
bool failure = int.TryParse("asdf", out i);

Dies liegt daran, dass TryParseein out- Parameter und kein ref- Parameter verwendet wird.


2
@sslaitha, danke. Wenn Ihre Frage ausreichend beantwortet wurde, denken Sie bitte daran, sie als Antwort zu markieren.
Brandon

3
Beachten Sie nur, dass wenn Sie int i = 10 haben; und benutze int.TryParse ("asdf", out i); dass ich 0 nicht 10 enthalten werde !!! Dies liegt daran, dass TryParse eine out-Variable verwendet, keine ref.
CaffGeek

2
Die "Vorsicht" gilt für das dritte Beispiel - nicht für das zweite. Hatte mich ein bisschen verwirrt, da ich erwartet hatte, dass sich das "Dies" auf das obige Beispiel bezieht, nicht auf das folgende.
Peter_Mcc

22
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 stringimmer ein int:

int myInt = int.Parse(myString);

Wenn Sie überprüfen möchten, ob stringes sich wirklich um eine intPremiere 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;
}

9
int a = int.Parse(myString);

oder noch besser, schauen Sie hinein int.TryParse(string)


6
string varString = "15";
int i = int.Parse(varString);

oder

int varI;
string varString = "15";
int.TryParse(varString, out varI);

int.TryParseist sicherer, da Sie varStringeine Ausnahme erhalten würden, wenn Sie etwas anderes eingeben (zum Beispiel "fsfdsfs"). Wenn Sie verwenden, int.TryParsewenn der String nicht in int konvertiert werden kann, wird er zurückgegeben 0.


5

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


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

2

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.


2
bool result = Int32.TryParse(someString, out someNumeric)

Diese Methode wird versuchen , zu konvertieren someStringin someNumericund Rückkehr ein resultabhängt , wenn die Konvertierung erfolgreich ist, truewenn die Konvertierung erfolgreich ist und falsewenn die Konvertierung fehlgeschlagen. Beachten Sie, dass diese Methode keine Ausnahme auslöst, wenn die Konvertierung wie die Int32.ParseMethode 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 #


0
int i;

string result = Something;

i = Convert.ToInt32(result);

0

Sie können entweder verwenden,

    int i = Convert.ToInt32(myString);

oder

    int i =int.Parse(myString);

0
class MyMath
{
    public dynamic Sum(dynamic x, dynamic y)
    {
        return (x+y);
    }
}

class Demo
{
    static void Main(string[] args)
    {
        MyMath d = new MyMath();
        Console.WriteLine(d.Sum(23.2, 32.2));
    }
}
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.