Проверить стандартный числовой формат

У меня проблема с проверкой строки в vb.net.

Я хочу проверить, находится ли inputString в допустимом стандартном числовом формате в соответствии с http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx кроме "E" и "X"

Так что у меня есть спецификатор формата, например, "d4" и моя inputString как "1999". Но Спецификатор неизвестен во время разработки.

Есть ли способ проверить inputString, если он действителен с заданным спецификатором формата

Greetz Gangfish

ОБНОВИТЬ:

Я пишу расширение для рабочей программы. Я добавляю массовую обработку для выбранных строк из сетки.

Если строка выбрана, значения отображаются в моих inputFields. Входные поля взяты из Telerik UI для WinForms(RadMaskedEditBox).

Если выбрано несколько строк, мне нужно удалить маскировку, потому что мы должны добавить шаблон редактора для всех записей (Форма: {1..5}тест).

Поэтому я должен проверить, является ли данный вход действительным для маскировки, назначенной основным приложением. Так что я понятия не имею, какой спецификатор формата дается во время разработки.

Но я знаю, что все стандартные числовые форматы, кроме "E" и "X", поддерживаются RadMaskedEditBox

Я хотел бы иметь что-то вроде этого:

Dim inputValue = "1999"
Dim formatSpecifier = "d4"
Try
    ValidateValue(inputValue, formatSpecifier)
Catch ex As Exception
    ' Validation Failed. Handle it
End Try

1 ответ

Спецификатор формата - это просто строка. Вы можете заменить его любым строковым значением во время выполнения, при условии, что строковое значение является допустимым спецификатором формата. (В противном случае я полагаю, что вы получите ошибку, поэтому вам нужно будет обработать все это.)

Например, предоставив пример кода по предоставленной вами ссылке:

decimal value = 123.456m;
Console.WriteLine(value.ToString("C2"));

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

string formatSpecifier = GetFormatSpecifier();
// ...
decimal value = 123.456m;
Console.WriteLine(value.ToString(formatSpecifier));

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

decimal value = 123.456m;
Console.WriteLine("Your account balance is {0:C2}.", value);

Вы могли бы вместо этого иметь это:

string formatSpecifier = GetFormatSpecifier();
// ...
decimal value = 123.456m;
Console.WriteLine("Your account balance is " + formatSpecifier + ".", value);

(Или вы можете построить строку с StringBuilder, Вы также можете использовать string.Format() собрать свой спецификатор формата, но я думаю, что это может привести к путанице при поддержке этого кода.)

Другие вопросы по тегам