Per verificare se il valore della stringa ha un valore numerico o meno in C #

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

  •  06-07-2019
  •  | 
  •  

Domanda

Sto avendo una stringa come questa

string str = " dfdsfdsf8fdfdfd9dfdfd4 "

Devo verificare se la stringa contiene numeri eseguendo il ciclo attraverso l'array.

È stato utile?

Soluzione

Che dire di un'espressione regolare:

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

Altri suggerimenti

Se stai cercando un valore intero puoi usare int. TryParse :

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

Per controllare un numero decimale, sostituire int.TryParse con Decimale. TryParse . Dai un'occhiata a questo post e ai commenti " Perché dovresti usare TryParse () in C # " per i dettagli.

Se hai bisogno di numeri decimali, puoi in alternativa usare questa espressione regolare:

return System.Text.RegularExpressions.Regex.IsMatch(
   TextValue, @"^-?\d+([\.]{1}\d*)?
Microsoft.VisualBasic.Information.IsNumeric("abc"); 
quot;);

E infine un'altra alternativa (se non sei religiosamente contro VB.NET ), puoi usare il metodo nello spazio dei nomi Microsoft.VisualBasic:

<*>

Se stai per passare in rassegna la stringa, NON usare int. TryParse ... è troppo pesante. Utilizzare invece char.IsNumber ();

Esempio:

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

La combinazione di parti della risposta di Kamals e di Tristars dà ...

str.Any(char.IsNumber)

che penso sia il modo più conciso e leggibile, invece di una regex

Se sei un drogato di linq come me, lo faresti in questo modo

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

in C # 2.0, prova questo:

        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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top