J'ai un tableau de chaînes. Quelle est la façon la plus simple de vérifier si tous les éléments du tableau sont des nombresLe moyen le plus simple de vérifier les numéros
string[] str = new string[] { "23", "25", "Ho" };
J'ai un tableau de chaînes. Quelle est la façon la plus simple de vérifier si tous les éléments du tableau sont des nombresLe moyen le plus simple de vérifier les numéros
string[] str = new string[] { "23", "25", "Ho" };
Si vous ajoutez une référence à l'ensemble Microsoft.VisualBasic
, vous pouvez utiliser le one-liner suivant:
bool isEverythingNumeric =
str.All(s => Microsoft.VisualBasic.Information.IsNumeric(s));
Clever + 1 ... out-of-the-box pensant –
+1, cette idée me fait peur, mais bon sang, ça marche =) –
Pourquoi utiliser quelque chose qui semble si spécifique à VisualBasic? – davidfowl
Essayez ceci:
string[] str = new string[] { "23", "25", "Ho" };
double trouble;
if (str.All(number => Double.TryParse(number, out trouble)))
{
// do stuff
}
Bonne idée, mais cela ne fonctionnera que si tous les nombres rentrent dans un Int32. – Konamiman
Dans ce cas, double.TryParse devrait fonctionner. –
En utilisant le fait qu'une chaîne est aussi un tableau de caractères, vous pouvez faire quelque chose comme ceci:
str.All(s => s.All(c => Char.IsDigit(c)));
Mais cela ne fonctionnera pas avec les chaînes contenant des espaces blancs. Et que diriez-vous de la notation scientifique? –
semble que nous devons définir quel est le premier nombre =) –
Kona ... qu'en est-il -1? Ce n'est pas un downvote: P Juste une question;) –
Vous pouvez faire ceci:
var isOnlyNumbers = str.All(s =>
{
double i;
return double.TryParse(s, out i);
});
Pourquoi le downvote anonyme? –
ou sans LINQ ...
bool allNumbers = true;
foreach(string str in myArray)
{
int nr;
if(!Int32.TryParse(str, out nr))
{
allNumbers = false;
break;
}
}
Comment l'utilisation des expressions régulières?
using System.Text.RegularExpressions;
...
bool isNum= Regex.IsMatch(strToMatch,"^\\d+(\\.\\d+)?$");
s'il vous plaît, définir le nombre: une int32, décimal, float point? –