[英]C#: Min to max number of digits after a decimal
我正在尝试检查用户输入的汇率,如果小数点后的最小2位数到最大5位数,我想接受输入的值。
有效示例:
*1.12
*1.123
*1.1234
*1.12345
无效:
1
1.1
1.123456
等等
我一直在尝试用Regex来获取它,但是现在它只允许小数点后5位,仅此而已。 这是代码:
//Check if the string is a double
bool IsDouble(string s)
{
var regex = new Regex(@"^\d+\.\d{5}?$");
var check = regex.IsMatch(s);
return check;
}
一点帮助将不胜感激。
应该这样做:
^\d+\.\d{2,5}$
使用图案
"^\d+\.\d{2,5}?$"
匹配2到5个字符
试试这个正则表达式
您可以在此处指定自己的范围d {2,5}
^\s*-?[1-9]\d*(\.\d{2,5})?\s*$
(要么)
^(\d{1,5}|\d{0,5}\.\d{2,5})$
非正则表达式解决方案
它还返回小数
public int? DecimalAfter (string strDec, out decimal? decNull)
{
int? decAfter = null;
strDec = strDec.Trim();
decimal dec;
if (decimal.TryParse(strDec, out dec))
{
decNull = dec;
int decPos = strDec.IndexOf('.');
if (decPos == -1)
{
decAfter = 0;
}
else
{
decAfter = strDec.Length - decPos - 1;
}
}
else decNull = null;
return decAfter;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.