Ü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.


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);

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() ) {
  ...
}

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
}

0

Wie wäre es damit:

bool test = System.Text.RegularExpressions.Regex.IsMatch(test, @"\d");

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 ";   /
        }

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.