Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
  • Страница:
  • 1
  • 2

ТЕМА:

Определяем, является ли строка числом 4 года 7 мес. назад #219

  • Олег Коровяков
  • Олег Коровяков аватар Автор темы
  • Не в сети
  • Автор сайта
  • Автор сайта
  • Сообщений: 280
  • Репутация: 1
  • Спасибо получено: 1
Если у меня есть эти строки:

"abc"= false
"123"= true
"ab2"= false

Есть ли такая команда, как IsNumeric() или что-то еще, которая может определить, является ли строка допустимым числом?

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Определяем, является ли строка числом 4 года 7 мес. назад #220

  • Олег Коровяков
  • Олег Коровяков аватар Автор темы
  • Не в сети
  • Автор сайта
  • Автор сайта
  • Сообщений: 280
  • Репутация: 1
  • Спасибо получено: 1
от С# 7:
var isNumeric = int.TryParse("123", out int n);

Варианты могут быть заменены их соответствующими типами!

Хотя я бы использовал double.TryParse, так как мы хотим знать, представляют ли они число вообще

Функция вернет true, если я передам строку как «-123» или «+123». Я понимаю, что целое число имеет положительные и отрицательные значения. Но если эта строка исходит из введенного пользователем текстового поля, она должна вернуть false.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Определяем, является ли строка числом 4 года 7 мес. назад #221

  • Олег Коровяков
  • Олег Коровяков аватар Автор темы
  • Не в сети
  • Автор сайта
  • Автор сайта
  • Сообщений: 280
  • Репутация: 1
  • Спасибо получено: 1
Вы также можете использовать:
stringTest.All(char.IsDigit);

Он вернет true для всех числовых значений (не с float) и false если входная строка является какой-либо буквенно-цифровой.

Обратите внимание: stringTest не должен быть пустой строкой, так как это пройдет тест на число.

Это очень круто. Однако следует помнить одну вещь: пустая строка пройдет этот тест как числовой.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Определяем, является ли строка числом 4 года 7 мес. назад #222

  • Олег Коровяков
  • Олег Коровяков аватар Автор темы
  • Не в сети
  • Автор сайта
  • Автор сайта
  • Сообщений: 280
  • Репутация: 1
  • Спасибо получено: 1
Это, вероятно, лучший вариант в С#.

Если вы хотите узнать, содержит ли строка целое число (целое число):
string someString;
// ...
int myInt;
bool isNumerical = int.TryParse(someString, out myInt);

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

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

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

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Определяем, является ли строка числом 4 года 7 мес. назад #223

  • Олег Коровяков
  • Олег Коровяков аватар Автор темы
  • Не в сети
  • Автор сайта
  • Автор сайта
  • Сообщений: 280
  • Репутация: 1
  • Спасибо получено: 1
Вы всегда можете использовать встроенные методы TryParse для многих типов данных, чтобы увидеть, пройдет ли данная строка.

Пример.
decimal myDec;
var Result = decimal.TryParse("123", out myDec);
Результат тогда = True
decimal myDec;
var Result = decimal.TryParse("abc", out myDec);
Результат тогда = False

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Определяем, является ли строка числом 4 года 7 мес. назад #224

  • Олег Коровяков
  • Олег Коровяков аватар Автор темы
  • Не в сети
  • Автор сайта
  • Автор сайта
  • Сообщений: 280
  • Репутация: 1
  • Спасибо получено: 1
В случае, если вы не хотите использовать 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;
    }
}

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

  • Страница:
  • 1
  • 2
Модераторы: Дмитрий

О сайте

Строительство индивидуальных домов из лёгкого самана - опыт, советы, методика строительства и подробные инструкции. А также возможность применения альтернативных источников энергии.


Контакты

08340. ул.Салютная 17. с.Гнедын.
Киевская обл. Украина.

+38 067 492 4124.
+38 095 065 8860.

info@okwood.com.ua
www.okwood.com.ua

Местоположения


8PM2+7R Гнедин, Kyiv Oblast