[英]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.