Как проверить в C #, если входная строка двоичная / гекса. число? - PullRequest
4 голосов
/ 26 февраля 2011

как я могу проверить в c #, является ли входная строка из поля ввода правильным двоичным (или шестнадцатеричным) числом?

Ответы [ 3 ]

6 голосов
/ 26 февраля 2011
using System.Globalization;
bool valid = int.TryParse(inputString, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out result);

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

bool isHex = inputString.Length > 2 &&
    inputString.Substring(0, 2).ToLowerInvariant() == "0x" &&
    int.TryParse(inputString.Substring(2), NumberStyles.HexNumber, CultureInfo.InvariantCulture, out result);

, чтобы одновременно проверять и анализировать строку.Для двоичного кода я бы использовал

Regex.IsMatch(inputString, "^[01]+$");

Вы должны использовать inputString = inputString.Trim(), чтобы сделать приложение более терпимым в отношении "нестандартного ввода".

3 голосов
/ 26 февраля 2011

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

int dummy;
bool isHex = int.TryParse(str,
                          NumberStyles.HexNumber,
                          CultureInfo.InvariantCulture,
                          out dummy);

Для двоичного файла нет встроенных функций, но вы можете использовать что-то вроде следующего:

static bool isbin(string s)
{
    foreach (var c in s)
        if (c != '0' && c != '1')
            return false;
    return true;
}
0 голосов
/ 26 февраля 2011

Попробуйте

Regex.IsMatch("0x6868FC", "\b0x[a-fA-F0-9]+\b");

Если вы ожидаете, что пользователь введет шестнадцатеричное число, начинающееся с 0x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...