Определите, является ли строка числом

Объяснение здесь: http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#attr-canvas-width как показано в другом сообщении, спасибо!

Внутренние размеры элемента canvas равны размеру пространства координат, причем числа интерпретируются в пикселях CSS. Однако элемент может быть произвольно задан таблицей стилей. Во время рендеринга изображение масштабируется в соответствии с этим размером макета.

blockquote>

663
задан Alexander Abakumov 29 January 2019 в 18:23
поделиться

11 ответов

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

Обновление Начиная с C # 7:

var isNumeric = int.TryParse("123", out int n);

var s могут быть заменены соответствующими типами!

1073
ответ дан 3 November 2019 в 21:17
поделиться

Все Ответы Полезны. Но при поиске решения, где Числовое значение является 12 цифрами или больше (в моем случае), затем при отладке, я нашел следующее решение полезным:

double tempInt = 0;
bool result = double.TryParse("Your_12_Digit_Or_more_StringValue", out tempInt);

переменная результата Th даст Вам TRUE или FALSE.

0
ответ дан 3 November 2019 в 21:17
поделиться
-1
ответ дан 3 November 2019 в 21:17
поделиться

Если вы хотите узнать, является ли строка числом, вы всегда можете попробуйте разобрать его:

var numberString = "123";
int number;

int.TryParse(numberString , out number);

Обратите внимание, что TryParse возвращает логическое значение , которое можно использовать для проверки успешности синтаксического анализа.

6
ответ дан 3 November 2019 в 21:17
поделиться

Double.TryParse

bool Double.TryParse(string s, out double result)
6
ответ дан 3 November 2019 в 21:17
поделиться

Вы можете использовать TryParse, чтобы определить, можно ли преобразовать строку в целое число.

int i;
bool bNum = int.TryParse(str, out i);

Логическое значение сообщит вам, сработало это или нет.

9
ответ дан 3 November 2019 в 21:17
поделиться

Вероятно, это лучший вариант в C #.

Если вы хотите узнать, содержит ли строка целое число (целое число):

string someString;
// ...
int myInt;
bool isNumerical = int.TryParse(someString, out myInt);

Метод TryParse попытается преобразовать строку в число (целое число), и если это удастся он вернет true и поместит соответствующее число в myInt. Если нет, возвращается false.

Решения, использующие альтернативу int.Parse (someString) , показанную в других ответах, работают, но намного медленнее, потому что генерирование исключений очень дорого. TryParse (...) был добавлен в язык C # в версии 2, и до тех пор у вас не было выбора. Теперь вы это делаете: поэтому вам следует избегать альтернативы Parse () .

Если вы хотите принимать десятичные числа, десятичный класс также имеет метод .TryParse (...) . Замените int на десятичное в приведенном выше обсуждении, и применяются те же принципы.

32
ответ дан 3 November 2019 в 21:17
поделиться

Вы всегда можете использовать встроенные методы TryParse для многих типов данных, чтобы увидеть, пройдет ли соответствующая строка.

Пример.

decimal myDec;
var Result = decimal.TryParse("123", out myDec);

Тогда результат будет = True

decimal myDec;
var Result = decimal.TryParse("abc", out myDec);

Результат будет тогда = False

25
ответ дан 3 November 2019 в 21:17
поделиться

В случае, если вы не хотите использовать int.Parse или double.Parse, вы можете сделать свой собственный, примерно так:

public static class Extensions
{
    public static bool IsNumeric(this string s)
    {
        foreach (char c in s)
        {
            if (!char.IsDigit(c) && c != '.')
            {
                return false;
            }
        }

        return true;
    }
}
19
ответ дан 3 November 2019 в 21:17
поделиться

Я использовал эту функцию несколько раз:

public static bool IsNumeric(object Expression)
{
    double retNum;

    bool isNum = Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum);
    return isNum;
}

Но вы также можете использовать;

bool b1 = Microsoft.VisualBasic.Information.IsNumeric("1"); //true
bool b2 = Microsoft.VisualBasic.Information.IsNumeric("1aa"); // false

Из Benchmarking IsNumeric Options

alt text
(источник: aspalliance.com )

alt text
(источник: aspalliance.com )

128
ответ дан 3 November 2019 в 21:17
поделиться

Это вернет истину, если вход - все числа. Не знаю, лучше ли это, чем TryParse , но он будет работать.

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

Если вы просто хотите узнать, смешаны ли в нем одно или несколько чисел с символами, оставьте ^ + и $ .

Regex.IsMatch(input, @"\d")

Изменить: На самом деле я думаю, что это лучше, чем TryParse, потому что очень длинная строка потенциально может вызвать переполнение TryParse.

349
ответ дан 3 November 2019 в 21:17
поделиться
Другие вопросы по тегам:

Похожие вопросы: