Überprüfen Sie mit LINQ, ob eine Zeichenfolge mindestens eine Nummer enthält

73

Ich möchte wissen, was die einfachste und kürzeste LINQ-Abfrage ist, um true zurückzugeben, wenn eine Zeichenfolge ein Zahlenzeichen enthält.

Jobi Joy
quelle
3
@saul was ist der Deal mit dem Kopfgeld? Die markierte Antwort ist glaubwürdig.
Jeremy Thompson

Antworten:

178
"abc3def".Any(c => char.IsDigit(c));

Update : Wie @Cipher betonte, kann es sogar noch kürzer gemacht werden:

"abc3def".Any(char.IsDigit);
Fredrik Mörk
quelle
1
Ich konnte die Methoden All () und Any () nicht finden, obwohl ich das 4.5-Framework verwende. Weißt du warum?
Cihadakt
7
@ cihata87 Stellen Sie sicher, dass Sie using System.Linq;oben in der Codedatei hinzugefügt haben .
Fredrik Mörk
15

Versuche dies

public static bool HasNumber(this string input) {
  return input.Where(x => Char.IsDigit(x)).Any();
}

Verwendung

string x = GetTheString();
if ( x.HasNumber() ) {
  ...
}
JaredPar
quelle
4
Oder einfachinput.Any(x => Char.IsDigit(x));
Mehrdad Afshari
@Mehrdad, ja, ich vergesse ständig diese Überlastung
JaredPar
10

oder möglich mit Regex:

string input = "123 find if this has a number";
bool containsNum = Regex.IsMatch(input, @"\d");
if (containsNum)
{
 //Do Something
}
Elegisch
quelle
0

Wie wäre es damit:

bool test = System.Text.RegularExpressions.Regex.IsMatch(test, @"\d");
Aaron
quelle
0
string number = fn_txt.Text;   //textbox
        Regex regex2 = new Regex(@"\d");   //check  number 
        Match match2 = regex2.Match(number);
        if (match2.Success)    // if found number 
        {  **// do what you want here** 
            fn_warm.Visible = true;    // visible warm lable
            fn_warm.Text = "write your text here ";   /
        }
inal
quelle
Ich denke nicht, dass dies die Frage wirklich beantwortet, da die Frage an kurzen Fragen interessiert war und es bereits viele gibt, die viel prägnanter sind als diese.
JHobern