C #: проверить, хранится ли внутри строкового объекта значение десятичное или нет - PullRequest
17 голосов
/ 13 ноября 2009

в C #, как я могу проверить, является ли значение, хранящееся в строковом объекте (например: string strOrderId = "435242A"), десятичным или нет?

Ответы [ 6 ]

29 голосов
/ 13 ноября 2009

Используйте функцию Decimal.TryParse .

decimal value;
if(Decimal.TryParse(strOrderId, out value))
  // It's a decimal
else
  // No it's not.
25 голосов
/ 13 ноября 2009

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

Пример MSDN:

string value = "1,643.57";
decimal number;
if (Decimal.TryParse(value, out number))
   Console.WriteLine(number);
else
   Console.WriteLine("Unable to parse '{0}'.", value);
4 голосов
/ 13 ноября 2009
decimal decValue;

if (decimal.TryParse(strOrderID, out decValue)
{ / *this is a decimal */ }
else
{ /* not a decimal */}
3 голосов
/ 13 ноября 2009

вы можете попытаться разобрать его:

string value = "123";
decimal result;
if (decimal.TryParse(value, out result))
{
    // the value was decimal
    Console.WriteLine(result);
}
1 голос
/ 10 июля 2018

В случае, если мы не хотим использовать дополнительную переменную.

string strOrderId = "435242A";

bool isDecimal = isDecimal(strOrderId);


public bool isDecimal(string value) {

  try {
    Decimal.Parse(value);
    return true;
  } catch {
    return false;
  }
}
1 голос
/ 24 января 2018

Этот простой код допускает целое или десятичное значение и отклоняет алфавиты и символы.

      foreach (char ch in strOrderId)
        {
            if (!char.IsDigit(ch) && ch != '.')
            {

              MessageBox.Show("This is not a decimal \n");
              return;
            }
           else
           {
           //this is a decimal value
           }

        }
...