我正在尝试将字符串解析为小数,如果字符串中的小数点后有超过 2 位数字,则解析应该失败。
例如:1.25
有效但 1.256
无效。
我尝试使用 C# 中的 decimal.TryParse
方法按以下方式解决,但这无济于事...
NumberFormatInfo nfi = new NumberFormatInfo();
nfi.NumberDecimalDigits = 2;
if (!decimal.TryParse(test, NumberStyles.AllowDecimalPoint, nfi, out s))
{
Console.WriteLine("Failed!");
return;
}
Console.WriteLine("Passed");
有什么建议么?
最佳答案
看看 Regex
。有各种主题涵盖了这个主题。
例子:
Regex to match 2 digits, optional decimal, two digitsRegex decimalMatch = new Regex(@"[0-9]?[0-9]?(\.[0-9]?[0-9]$)");
这应该适用于您的情况。
var res = decimalMatch.IsMatch("1111.1"); // True
res = decimalMatch.IsMatch("12111.221"); // False
res = decimalMatch.IsMatch("11.21"); // True
res = decimalMatch.IsMatch("11.2111"); // False
res = decimalMatch.IsMatch("1121211.21143434"); // false
关于c# - 在 C# 中将字符串解析为十进制时无法限制小数位数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8253819/