我有以下正则表达式来匹配小数:
@"[\d]{1,4}([.][\d]{1,2})?"
Run Code Online (Sandbox Code Playgroud)
但我可以输入多个小数点。我怎样才能防止这种情况发生?一般来说,我可以输入“2000”或“2000.22”等字符串。我尝试使用decimal.TryParse,但我可以输入两个小数点(例如2000..)
这是我的类,其中包含验证方法:
public static class ValidationUtils
{
public static bool IsValid(string text)
{
var regex = new Regex(@"^\d{1,9}([.]\d{1,2})?$");
var success = regex.IsMatch(text);
return success;
}
}
Run Code Online (Sandbox Code Playgroud)
这是页面代码开始中的调用:
private void OnPreviewTextInput(object sender, TextCompositionEventArgs eventArgs)
{
var box = eventArgs.OriginalSource as TextBox;
if (box == null) return;
eventArgs.Handled = !ValidationUtils.IsValid(box.Text + eventArgs.Text);
}
Run Code Online (Sandbox Code Playgroud)
以及 TextBox 的 xaml:
<TextBox Text="{Binding Nominal, Mode=TwoWay,
StringFormat={}{0:0.######}, UpdateSourceTrigger=PropertyChanged,
NotifyOnValidationError=True, ValidatesOnDataErrors=True,
Converter={StaticResource decimalValueConverter}}"
PreviewTextInput="OnPreviewTextInput"/>
Run Code Online (Sandbox Code Playgroud)
我在这里使用了错误的事件吗?
感谢您。
例如,文本框中的输入字符串为10.00美元.我打电话
decimal result;
var a = decimal.TryParse(text, NumberStyles.AllowCurrencySymbol, cultureInfo, out result);
Run Code Online (Sandbox Code Playgroud)
cultureInfo是已知的(en-US).为什么decimal.tryParse返回错误?
谢谢.
让我们说我有一系列字符,我从控制台输入.如何以下列方式将它们写入二维数组:
1 6 11 16 21
2 7 12 17 22
3 8 13 18 23
4 9 14 19 24
5 10 15 20 25
或者使用列表会更好吗?
谢谢!