我在vb.net中验证字符串时遇到问题。
我想根据http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx检查inputString是否为有效的标准数字格式,除了" E"和" X"
所以我有格式说明符,例如" D4"和我的inputString喜欢" 1999"。但是Specifier在设计时是未知的。
如果inputString对于给定的Format说明符
有效,是否有办法验证它greetz gangfish
更新:
我正在编写一个工作程序的扩展。 我正在为gridview中的选定行添加批量处理。
如果选择了某行,则值会显示在我的inputFields中。 inputField来自Telerik UI for WinForms(RadMaskedEditBox)。
如果选择了多行,我必须删除Masking,因为我们必须为alle条目添加一个Editor-Pattern(Form:{1..5} test )。
所以我必须验证给定输入是否对主应用程序分配的屏蔽有效。所以我不知道在设计时给出了什么格式说明符。
但我知道所有标准数字格式除了" E"和" X"由RadMaskedEditBox
支持我想有这样的事情:
Dim inputValue = "1999"
Dim formatSpecifier = "d4"
Try
ValidateValue(inputValue, formatSpecifier)
Catch ex As Exception
' Validation Failed. Handle it
End Try
答案 0 :(得分:0)
格式说明符只是一个字符串。如果字符串值是有效的格式说明符,则可以在运行时将其替换为任何字符串值。 (否则我想你会收到一个错误,所以你会想要对所有这些做错误处理。)
例如,给出您提供的链接上的示例代码:
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()
来组合格式说明符,但我想这可能会在支持该代码时引入混淆。)