如何将C#中小数点的输入限制为仅1?
下面的代码限制了我需要限制的所有内容,但它允许用户输入超过1个小数点如何将C#中小数点的输入限制为仅1?,c#,C#,下面的代码限制了我需要限制的所有内容,但它允许用户输入超过1个小数点 if (System.Text.RegularExpressions.Regex.IsMatch(txtOperand2.Text, "[^0-9],[.],[\b]")) { MessageBox.Show("Please enter only numbers."); txtOperand2.Text = txtOperand2.Text.R
if (System.Text.RegularExpressions.Regex.IsMatch(txtOperand2.Text,
"[^0-9],[.],[\b]"))
{
MessageBox.Show("Please enter only numbers.");
txtOperand2.Text = txtOperand2.Text.Remove(txtOperand2.Text.Length - 1);
}
根据他的评论。如果您只是检查某个位数的有效小数点,并且需要一个快速的区域性感知解决方案(以及其他类似的可配置性)
代替正则表达式,你可以做这样的事情。并通过某种方法检查它的小数位数
将数字的字符串表示形式转换为十进制
相等的返回值指示转换是否成功
或者失败了
给定的
// gets the decimal places by deconstruction
public static int GetDecimalPlaces(decimal d)
=> BitConverter.GetBytes(decimal.GetBits(d)[3])[2];
用法
if (decimal.TryParse(argument, out var d) && GetDecimalPlaces(d) == 1)
Console.WriteLine("You win, play again?");
添加胡椒粉和盐来调味如果您试图验证十进制,请使用
decimal.TryParse
,而不是正则表达式TryParse
更有用,可以处理本地化之类的事情。如果您能展示一些被认为是有效的和被认为是无效的例子,这会有所帮助。