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