Подтвердить что ты не робот

Как проверить, является ли строка числом?

Я хочу знать на С#, как проверить, является ли строка числом (и просто числом).

Пример:

141241   Yes
232a23   No
12412a   No

и т.д.

Существует ли определенная функция?

4b9b3361

Ответ 1

Посмотрите double.TryParse(), если вы говорите о таких цифрах, как 1, -2 и 3.14159. Некоторые другие предполагают int.TryParse(), но это произойдет с ошибкой.

double num;
string candidate = "1";
if (double.TryParse(candidate, out num))
{
    // It a number!
}

EDIT: Как указывает Лукас ниже, мы должны помнить культуру потока при разборе чисел с десятичным разделителем, т.е. сделать это безопасным:

double.TryParse(candidate, NumberStyles.AllowDecimalPoint, CultureInfo.InvariantCulture, out num)

Ответ 2

Если вы просто хотите проверить, является ли строка всеми цифрами (не находясь в определенном диапазоне номеров), вы можете использовать:

string test = "123";
bool allDigits = test.All(char.IsDigit);

Ответ 3

Да, есть

int temp;
int.TryParse("141241", out temp) = true
int.TryParse("232a23", out temp) = false
int.TryParse("12412a", out temp) = false

Надеюсь, что это поможет.

Ответ 4

Используйте Int32.TryParse()

int num;

bool isNum = Int32.TryParse("[string to test]", out num);

if (isNum)
{
    //Is a Number
}
else
{
    //Not a number
}

Ссылка MSDN

Ответ 5

Используйте int.TryParse():

string input = "141241";
int ouput;
bool result = int.TryParse(input, out output);

результат будет true, если бы он был.

Ответ 6

Yep - вы можете использовать Visual Basic один в С#. Это все .NET; функции VB IsNumeric, IsDate и т.д. являются фактически статическими методами Информационный класс. Итак, вот ваш код:

using Microsoft.VisualBasic;
...
Information.IsNumeric( object );

Ответ 7

int value;
if (int.TryParse("your string", out value))
{
    Console.WriteLine(value);
}

Ответ 9

У многих типов данных есть метод TryParse, который вернет true, если ему удастся успешно преобразовать этот тип, с анализируемым значением как out-parameter.

В вашем случае это может представлять интерес:

http://msdn.microsoft.com/en-us/library/system.int32.tryparse.aspx

http://msdn.microsoft.com/en-us/library/system.decimal.tryparse.aspx

Ответ 10

Это мой личный фаворит

private static bool IsItOnlyNumbers(string searchString)
{
return !String.IsNullOrEmpty(searchString) && searchString.All(char.IsDigit);
}

Ответ 11

int result = 0;
bool isValidInt = int.TryParse("1234", out result);
//isValidInt should be true
//result is the integer 1234

Конечно, вы можете проверить другие типы номеров, например decimal или double.

Ответ 12

Вы должны использовать метод TryParse для int

string text1 = "x";
    int num1;
    bool res = int.TryParse(text1, out num1);
    if (res == false)
    {
        // String is not a number.
    }

Ответ 13

string str = "123";
int i = Int.Parse(str);

Если str является допустимой целочисленной строкой, то она будет преобразована в целое и сохранена в другом случае. Исключение возникает.

Ответ 14

Если вы хотите проверить, является ли каждый символ цифрой, а также возвращать символ, который не является цифрой, как часть проверки сообщения об ошибке, то вы можете прокручивать каждый char.

string num = "123x";

foreach (char c in num.ToArray())
{
    if (!Char.IsDigit(c))
    {
        Console.WriteLine("character " + c + " is not a number");
        return;
    }
}

Ответ 15

int.TryPasrse() Methode - лучший способ поэтому, если значение было строкой, у вас никогда не будет исключения, вместо TryParse Methode вернется к вам значение bool, чтобы вы знали, что операция синтаксического анализа выполнена успешно или неудачна.

string yourText = "2";
int num;
bool res = int.TryParse(yourText, out num);
if (res == true)
{
    // the operation succeeded and you got the number in num parameter
}
else
{
   // the operation failed
}

Ответ 16

Вы можете использовать что-то вроде следующего кода:

    string numbers = "numbers you want to check";

    Regex regex = new Regex("^[0-9]+$"));

    if (regex.IsMatch(numbers))
    {
        //string value is a number
    }

Ответ 17

public static void Main()
        {
            string id = "141241";
            string id1 = "232a23";
            string id2 = "12412a";

            validation( id,  id1,  id2);
        }

       public static void validation(params object[] list)
        {
            string s = "";
            int result;
            string _Msg = "";

            for (int i = 0; i < list.Length; i++)
            {
                s = (list[i].ToString());

               if (string.IsNullOrEmpty(s))
               {
                   _Msg = "Please Enter the value"; 
               }

               if (int.TryParse(s, out result))
               {
                   _Msg = "Enter  " + s.ToString() + ", value is Integer";

               }
               else
               {
                   _Msg = "This is not Integer value ";
               }
            }
        }

Ответ 18

Попробуйте это

здесь я выполняю добавление no и конкатенацию строки

 private void button1_Click(object sender, EventArgs e)
        {
            bool chk,chk1;
            int chkq;
            chk = int.TryParse(textBox1.Text, out chkq);
            chk1 = int.TryParse(textBox2.Text, out chkq);
            if (chk1 && chk)
            {
                double a = Convert.ToDouble(textBox1.Text);
                double b = Convert.ToDouble(textBox2.Text);
                double c = a + b;
                textBox3.Text = Convert.ToString(c);
            }
            else
            {
                string f, d,s;
                f = textBox1.Text;
                d = textBox2.Text;
                s = f + d;
                textBox3.Text = s;
            }
        }

Ответ 19

Я не программист с особенно высокими навыками, но когда мне нужно было это решить, я выбрал то, что, вероятно, очень не элегантное решение, но оно соответствует моим потребностям.

    private bool IsValidNumber(string _checkString, string _checkType)
    {
        float _checkF;
        int _checkI;
        bool _result = false;

        switch (_checkType)
        {
            case "int":
                _result = int.TryParse(_checkString, out _checkI);
                break;
            case "float":
                _result = Single.TryParse(_checkString, out _checkF);
                break;
        }
        return _result;

    }

Я просто назову это чем-то вроде:

if (IsValidNumber("1.2", "float")) etc...

Это означает, что я могу получить простой верный/ложный ответ во время If... Затем сравнения, и это было важным фактором для меня. Если мне нужно проверить другие типы, тогда я добавляю переменную и оператор case, если требуется.

Ответ 20

используйте этот

 double num;
    string candidate = "1";
    if (double.TryParse(candidate, out num))
    {
        // It a number!


 }

Ответ 21

int num;
bool isNumeric = int.TryParse("123", out num);

Ответ 22

namespace Exception
{
    class Program
    {
        static void Main(string[] args)
        {
            bool isNumeric;
            int n;
            do
            {
                Console.Write("Enter a number:");
                isNumeric = int.TryParse(Console.ReadLine(), out n);
            } while (isNumeric == false);
            Console.WriteLine("Thanks for entering number" + n);
            Console.Read();
        }
    }
}

Ответ 23

Regex.IsMatch(stringToBeChecked, @"^\d+$")

Regex.IsMatch("141241", @"^\d+$")  // True

Regex.IsMatch("232a23", @"^\d+$")  // False

Regex.IsMatch("12412a", @"^\d+$")  // False

Ответ 24

Проблема с некоторыми из предлагаемых решений заключается в том, что они не учитывают различные форматы числа с плавающей запятой. Эта функция выполняет следующие функции:

public bool IsNumber(String value)
{
    double d;
    if (string.IsNullOrWhiteSpace(value)) 
        return false; 
    else        
        return double.TryParse(value.Trim(), System.Globalization.NumberStyles.Any,
                            System.Globalization.CultureInfo.InvariantCulture, out d);
}

Предполагается, что разрешены различные стили числа с плавающей запятой, такие как десятичная точка (английский) и запятая decima (немецкий). Если это не так, измените параметр number styles. Обратите внимание, что Any содержит не include hex mumbers, поскольку тип double не поддерживает его.