如何将C#中小数点的输入限制为仅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

下面的代码限制了我需要限制的所有内容,但它允许用户输入超过1个小数点

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
更有用,可以处理本地化之类的事情。如果您能展示一些被认为是有效的和被认为是无效的例子,这会有所帮助。