首页 > 解决方案 > 如何在 C# 中将小数点的输入限制为仅 1?

问题描述

下面的代码限制了我需要限制的所有内容,但它允许用户输入超过 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);
}

标签: c#

解决方案


根据@DourHighArch的有价值的评论。如果您只是检查特定位数的有效小数,并且您想要一个快速的文化感知解决方案(以及其他可配置性,如数字样式)。

你可以做这样的事情,而不是正则表达式。decimal.TryParse并通过某种方式检查它有多少小数位。

将数字的字符串表示形式转换为其等效的十进制。返回值指示转换是成功还是失败。

给定

// 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?");

加入胡椒和盐调味


推荐阅读