Um zu überprüfen, ob der String-Wert numerischen Wert oder nicht in C # hat

StackOverflow https://stackoverflow.com/questions/268120

  •  06-07-2019
  •  | 
  •  

Frage

Ich habe eine Zeichenfolge wie folgt

string str = "dfdsfdsf8fdfdfd9dfdfd4"

Ich muss prüfen, ob die Stringnummer enthält durch das Array von looping.

War es hilfreich?

Lösung

Was ist mit einem regulären Ausdruck:

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

Andere Tipps

Wenn Sie sich für einen ganzzahligen Wert suchen, könnte Sie int. TryParse :

int result;
if (int.TryParse("123", out result))
{
    Debug.WriteLine("Valid integer: " + result);
}
else
{
    Debug.WriteLine("Not a valid integer");
}

Für eine Dezimalzahl Überprüfung ersetzen int.TryParse mit Dezimal. TryParse . Überprüfen Sie dieses Blog-Post und Kommentare "Warum sollten Sie verwenden TryParse () in C # ".

Wenn Sie Dezimalzahlen müssen, können Sie alternativ diesen regulären Ausdruck verwenden:

return System.Text.RegularExpressions.Regex.IsMatch(
   TextValue, @"^-?\d+([\.]{1}\d*)?$");

Und schließlich eine weitere Alternative (wenn Sie nicht religiös gegen VB.NET ), können Sie die Methode im Microsoft.VisualBasic-Namespace verwenden:

Microsoft.VisualBasic.Information.IsNumeric("abc"); 

Wenn Sie eine Schleife durch die Zeichenfolge gehen, NICHT int.TryParse verwenden ... das ist viel zu schwer. Verwenden Sie stattdessen char.IsNumber ();

Beispiel:

foreach (char c in myString)
    if (char.IsNumber(c))
        return true;
str.ToCharArray().Any(x => char.IsNumber(x));

Die Kombination von Teilen Kamals Antworten und TriStars Antworten geben ...

str.Any(char.IsNumber)

, die ich denke, ist die prägnanteste und lesbare Weise anstelle einer regex

Wenn Sie eine Linq-Junkie wie ich sind, dann würden Sie es auf diese Weise tun

string s = "abc1def2ghi";
bool HasNumber = (from a in s.ToCharArray() where a >= '0' && a <= '9' select a).Count() > 0;

in C # 2.0, versuchen Sie dies:

        string str = "dfdsfdsf8fdfdfd9dfdfd4";

        for (int i = 0; i < str.Length; i++)
        {
            int result;
            if (int.TryParse(str[i].ToString(), out result))
            {
                //element is a number            
            }
            else
            {
                // not a number
            }
        }
str.ToCharArray().Any(char.IsNumber)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top