Zoeken…


Tekenreeks naar geheel getal omzetten

Er zijn verschillende methoden beschikbaar voor het expliciet omzetten van een string naar een integer , zoals:

  1. Convert.ToInt16();

  2. Convert.ToInt32();

  3. Convert.ToInt64();

  4. int.Parse();

Maar al deze methoden FormatException een FormatException als de invoertekenreeks niet-numerieke tekens bevat. Hiervoor moeten we een extra uitzonderingsbehandeling ( try..catch ) schrijven om ze in dergelijke gevallen te kunnen behandelen.


Uitleg met voorbeelden:

Dus laat onze input zijn:

string inputString = "10.2";

Voorbeeld 1: Convert.ToInt32()

int convertedInt = Convert.ToInt32(inputString); // Failed to Convert 
// Throws an Exception "Input string was not in a correct format."

Opmerking: Hetzelfde geldt voor de andere genoemde methoden namelijk - Convert.ToInt16(); en Convert.ToInt64();

Voorbeeld 2: int.Parse()

int convertedInt = int.Parse(inputString); // Same result "Input string was not in a correct format.

Hoe omzeilen we dit?

Zoals eerder gezegd, hebben we meestal een try..catch nodig om de uitzonderingen te verwerken, zoals hieronder wordt getoond:

try
{
    string inputString = "10.2";
    int convertedInt = int.Parse(inputString);
}
catch (Exception Ex)
{
    //Display some message, that the conversion has failed.         
}

Maar, met behulp van de try..catch overal zal geen goede praktijk, en er kunnen een aantal scenario's waar we wilden geven 0 als de ingang is verkeerd, (Als we de bovenstaande methode volgen we moeten toewijzen 0 tot convertedInt van de blok blokkeren). Om dergelijke scenario's te verwerken, kunnen we gebruik maken van een speciale methode genaamd. .TryParse() .

De methode. .TryParse() heeft een interne Exception-afhandeling, die u de uitvoer naar de parameter out geeft en een Booleaanse waarde retourneert die de conversiestatus aangeeft ( true als de conversie is geslaagd; false als deze is mislukt). Op basis van de retourwaarde kunnen we de conversiestatus bepalen. Laten we een voorbeeld bekijken:

Gebruik 1: sla de retourwaarde op in een Booleaanse variabele

 int convertedInt; // Be the required integer
 bool isSuccessConversion = int.TryParse(inputString, out convertedInt);

We kunnen de variabele isSuccessConversion na de uitvoering om de conversiestatus te controleren. Als het onwaar is, is de waarde van convertedInt 0 (u hoeft de retourwaarde niet te controleren als u 0 wilt dat de conversie mislukt).

Gebruik 2: controleer de retourwaarde met if

if (int.TryParse(inputString, out convertedInt))
{
    // convertedInt will have the converted value
    // Proceed with that
}
else 
{
 // Display an error message
}

Gebruik 3: zonder de retourwaarde aan te vinken, kunt u het volgende gebruiken, als u niet geïnteresseerd bent in de retourwaarde (geconverteerd of niet, 0 is goed)

int.TryParse(inputString, out convertedInt);
// use the value of convertedInt
// But it will be 0 if not converted


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow