Ich habe ein String-Array. Was ist der einfachste Weg ist zu prüfen, ob alle Elemente des Arrays sind ZahlenDer einfachste Weg, um Zahlen zu überprüfen
string[] str = new string[] { "23", "25", "Ho" };
Ich habe ein String-Array. Was ist der einfachste Weg ist zu prüfen, ob alle Elemente des Arrays sind ZahlenDer einfachste Weg, um Zahlen zu überprüfen
string[] str = new string[] { "23", "25", "Ho" };
Wenn Sie einen Verweis auf die Microsoft.VisualBasic
Baugruppe hinzufügen, können Sie die folgenden Einzeiler verwenden:
bool isEverythingNumeric =
str.All(s => Microsoft.VisualBasic.Information.IsNumeric(s));
Clever +1 ... out-of-the-Box Denken –
+1, schreckt mir diese Idee, aber, Hölle, es funktioniert =) –
Warum etwas, das so spezifisch für VisualBasic scheint? – davidfowl
Try this:
string[] str = new string[] { "23", "25", "Ho" };
double trouble;
if (str.All(number => Double.TryParse(number, out trouble)))
{
// do stuff
}
Schöne Idee, aber das funktioniert nur, wenn alle Zahlen in einem Int32 passen. – Konamiman
In diesem Fall sollte double.TryParse funktionieren. –
die Tatsache verwenden, dass ein String ist auch ein Array von Zeichen, könnten Sie etwas tun dies wie:
str.All(s => s.All(c => Char.IsDigit(c)));
Dies funktioniert jedoch nicht mit Strings, die Leerzeichen enthalten. Und wie steht es mit der wissenschaftlichen Notation? –
scheint, müssen wir definieren, was eine Nummer ist zuerst =) –
Kona ... was ist mit -1? Das ist kein Downvote: P Nur eine Frage;) –
Sie können dies tun:
var isOnlyNumbers = str.All(s =>
{
double i;
return double.TryParse(s, out i);
});
Warum der anonyme Downvote? –
oder ohne Linq ...
bool allNumbers = true;
foreach(string str in myArray)
{
int nr;
if(!Int32.TryParse(str, out nr))
{
allNumbers = false;
break;
}
}
Wie sei es mit regulären Ausdrücken?
using System.Text.RegularExpressions;
...
bool isNum= Regex.IsMatch(strToMatch,"^\\d+(\\.\\d+)?$");
Bitte definieren Nummer: its a int32, dezimal, float-Punkt? –