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.

Brandon
quelle
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;
}
Devuxer
quelle
9
int a = int.Parse(myString);

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

Neil N.
quelle
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.

MadBoy
quelle
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;
}
Daniel Mošmondor
quelle
5

Mach so etwas wie:

var result = Int32.Parse(str);
Tomas Vana
quelle
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);
madatanisch
quelle
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.


quelle
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 #

jet_choong
quelle
0
int i;

string result = Something;

i = Convert.ToInt32(result);
deepu
quelle
0

Sie können entweder verwenden,

    int i = Convert.ToInt32(myString);

oder

    int i =int.Parse(myString);
Sackgasse
quelle
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));
    }
}
Abdo
quelle