941 Stimmen

Erkennen, ob eine Zeichenkette eine Zahl ist

Wenn ich diese Saiten habe:

  1. "abc" = false

  2. "123" = true

  3. "ab2" = false

Gibt es einen Befehl, wie IsNumeric() oder etwas anderes, das erkennen kann, ob eine Zeichenkette eine gültige Zahl ist?

7voto

Liakat Hossain Punkte 1076

Die beste flexible Lösung mit der in .net integrierten Funktion called- char.IsDigit . Es funktioniert mit unbegrenzt langen Zahlen. Es gibt nur true zurück, wenn jedes Zeichen eine numerische Zahl ist. Ich habe es viele Male ohne Probleme verwendet und es ist die einfachste und sauberste Lösung, die ich je gefunden habe. Ich habe eine Beispielmethode erstellt, die sofort einsatzbereit ist. Zusätzlich habe ich eine Validierung für null und leere Eingaben hinzugefügt. So ist die Methode jetzt völlig kugelsicher

public static bool IsNumeric(string strNumber)
    {
        if (string.IsNullOrEmpty(strNumber))
        {
            return false;
        }
        else
        {
            int numberOfChar = strNumber.Count();
            if (numberOfChar > 0)
            {
                bool r = strNumber.All(char.IsDigit);
                return r;
            }
            else
            {
                return false;
            }
        }
    }

6voto

Tahir Rehman Punkte 177

Probieren Sie die folgende Regex-Definition aus

new Regex(@"^\d{4}").IsMatch("6")    // false
new Regex(@"^\d{4}").IsMatch("68ab") // false
new Regex(@"^\d{4}").IsMatch("1111abcdefg")
new Regex(@"^\d+").IsMatch("6") // true (any length but at least one digit)

2voto

Yawar Ali Punkte 139
Regex rx = new Regex(@"^([1-9]\d*(\.)\d*|0?(\.)\d*[1-9]\d*|[1-9]\d*)$");
string text = "12.0";
var result = rx.IsMatch(text);
Console.WriteLine(result);

Prüfen, ob String uint, ulong ist oder nur Ziffern enthält, ein .(Punkt) und Ziffern Beispieleingaben

123 => True
123.1 => True
0.123 => True
.123 => True
0.2 => True
3452.434.43=> False
2342f43.34 => False
svasad.324 => False
3215.afa => False

2voto

OMANSAK Punkte 828
public static bool IsNumeric(this string input)
{
    int n;
    if (!string.IsNullOrEmpty(input)) //.Replace('.',null).Replace(',',null)
    {
        foreach (var i in input)
        {
            if (!int.TryParse(i.ToString(), out n))
            {
                return false;
            }

        }
        return true;
    }
    return false;
}

2voto

userSteve Punkte 1512

Verwenden Sie diese Erweiterungsmethoden, um klar zu unterscheiden zwischen einer Prüfung, ob die Zeichenkette Numerisch und wenn die Zeichenfolge nur enthält 0-9 Ziffern

public static class ExtensionMethods
{
    /// <summary>
    /// Returns true if string could represent a valid number, including decimals and local culture symbols
    /// </summary>
    public static bool IsNumeric(this string s)
    {
        decimal d;
        return decimal.TryParse(s, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.CurrentCulture, out d);
    }

    /// <summary>
    /// Returns true only if string is wholy comprised of numerical digits
    /// </summary>
    public static bool IsNumbersOnly(this string s)
    {
        if (s == null || s == string.Empty)
            return false;

        foreach (char c in s)
        {
            if (c < '0' || c > '9') // Avoid using .IsDigit or .IsNumeric as they will return true for other characters
                return false;
        }

        return true;
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X