Ho un array di stringhe. Qual è il modo più semplice per verificare se tutti gli elementi dell'array sono numeriIl modo più semplice per controllare i numeri
string[] str = new string[] { "23", "25", "Ho" };
Ho un array di stringhe. Qual è il modo più semplice per verificare se tutti gli elementi dell'array sono numeriIl modo più semplice per controllare i numeri
string[] str = new string[] { "23", "25", "Ho" };
Se si aggiunge un riferimento all'assembly Microsoft.VisualBasic
, è possibile utilizzare il seguente one-liner:
bool isEverythingNumeric =
str.All(s => Microsoft.VisualBasic.Information.IsNumeric(s));
Clever +1 ... il pensiero immediato –
+1, questa idea mi spaventa, ma, diavolo, funziona =) –
Perché utilizzare qualcosa che sembra così specifico per VisualBasic? – davidfowl
Prova questa:
string[] str = new string[] { "23", "25", "Ho" };
double trouble;
if (str.All(number => Double.TryParse(number, out trouble)))
{
// do stuff
}
Bella idea, ma funzionerà solo se tutti i numeri rientrano in un Int32. – Konamiman
In questo caso, double.TryParse dovrebbe funzionare. –
sfruttando il fatto che una stringa è anche una serie di caratteri, si potrebbe fare qualcosa in questo modo:
str.All(s => s.All(c => Char.IsDigit(c)));
Ma questo non funzionerà con stringhe che contengono uno spazio bianco. E che dire della notazione scientifica? –
sembra che dobbiamo definire che cosa è un numero prima =) –
Kona ... che dire di -1? Questo non è un downvote: P Solo una domanda;) –
Si può fare questo:
var isOnlyNumbers = str.All(s =>
{
double i;
return double.TryParse(s, out i);
});
Perché il downvote anonimo? –
O senza LINQ ...
bool allNumbers = true;
foreach(string str in myArray)
{
int nr;
if(!Int32.TryParse(str, out nr))
{
allNumbers = false;
break;
}
}
ne dite di usare le espressioni regolari?
using System.Text.RegularExpressions;
...
bool isNum= Regex.IsMatch(strToMatch,"^\\d+(\\.\\d+)?$");
per favore, definire il numero: il suo un Int32, decimale, float-point? –