Проверить стандартный числовой формат
У меня проблема с проверкой строки в 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()
собрать свой спецификатор формата, но я думаю, что это может привести к путанице при поддержке этого кода.)