Convert.ToInt32() een tekenreeks met komma’s

Ik heb een tekenreeks die soms komma’s heeft die het nummer scheiden, zoals 1,500en ik moet dit converteren naar een Int, momenteel genereert het een uitzondering, kan iemand me vertellen hoe ik dit kan oplossen zodat soms kan ik getallen invoeren met komma’s en andere keren zonder komma’s en het zal nog steeds converteren.


Antwoord 1, autoriteit 100%

Je zou int.Parseen voeg de NumberStyles.AllowThousandsvlag:

int num = int.Parse(toParse, NumberStyles.AllowThousands);

Of int.TryParselaten weten of de operatie is gelukt:

int num;
if (int.TryParse(toParse, NumberStyles.AllowThousands,
                 CultureInfo.InvariantCulture, out num))
{
    // parse successful, use 'num'
}

Antwoord 2, autoriteit 5%

Je kunt Decimal.Parse()gebruiken en het resultaat casten naar int. Dit werkt ook met de huidige cultuur, of je kunt een CultureInfospecificeren om te gebruiken. Het is niet nodig om komma’s, decimale punten, enz. handmatig te verwerken, dat is allemaal ingebouwd in .NET.


Antwoord 3, autoriteit 2%

Hoe zit het met de brute force-suggesties voor het verwijderen van komma’s? Wat als de string zoiets is als “1,1,1”? Is dit een geldig nummer? Het verwijderen van komma’s zou het een geldig nummer maken en de conversie semantisch incorrect maken.

Er is een reden waarom NumberStyles bestaat en de methode Int.Parse() kan parseren met of zonder rekening te houden met de nummerstijl.


Antwoord 4, autoriteit 2%

Als u zich geen zorgen hoeft te maken over regels voor verschillende landen (sommige gebruiken bijvoorbeeld een komma als decimaalteken in plaats van het scheidingsteken voor duizendtallen), verwijder dan eerst de komma’s.

bijv.

string nastyNumber = "1,234";
int result = int.Parse(nastyNumber.Replace(",", ""));

(vervang int door double als je een drijvende komma nodig hebt)


Antwoord 5

Je kunt replace(';', '')doen voordat je het omzet naar int.


Antwoord 6

U kunt de code gebruiken

int num = Strings.Replace(str, ",", string.Empty);

Dit vervangt alle exemplaren van “,” door “” (lege tekenreeks). Dus 1.000.000 wordt 1000000


Antwoord 7

Je kunt de komma’s vervangen door String.Emptyvoordat je Convert.ToInt32()aanroept, of je kunt kijken naar het gebruik van Int32.Parse()of Int32.TryParse()met NumberStyles.AllowThousandsals een van de parameters.

Int32.Parse

Int32.TryParse

Other episodes