Ik heb een tekenreeks die soms komma’s heeft die het nummer scheiden, zoals 1,500
en 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.Parse
en voeg de NumberStyles.AllowThousands
vlag:
int num = int.Parse(toParse, NumberStyles.AllowThousands);
Of int.TryParse
laten 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 CultureInfo
specificeren 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.Empty
voordat je Convert.ToInt32()
aanroept, of je kunt kijken naar het gebruik van Int32.Parse()
of Int32.TryParse()
met NumberStyles.AllowThousands
als een van de parameters.