c#使用indexofany作为小数点,并且仅限制为一个小数点

时间:2013-12-13 07:52:09

标签: c# calculator

  `private void Dot_Click_1(object sender, EventArgs e)            
        {          
            if (NumBox1.Text.IndexOfAny(char['.'])
            {

            }`

我认为限制一个小数点的解决方案就在这里。

if (!string.IsNullOrEmpty(NumBox1.Text) {
numbox1.text = "0" + "."; } }

这是文本框为空时。然后我点击点号以自动获得“0”的结果。在文本框内。但是,它只返回“。”

1 个答案:

答案 0 :(得分:1)

目前尚不清楚为什么你会得到char['.'],或者你的意思是什么。我怀疑你只想要字符文字'.'并使用IndexOf

else if (NumBox1.Text.IndexOf('.') == -1 && ...)

如果您正在寻找多个内容,您只想使用IndexOfAny,在这种情况下,您需要以下内容:

IndexOfAny(new[] { '.', ',' })

甚至更简单:

else if (!NumBox1.Text.Contains(".") && ...)

我强烈怀疑你的条件真的不是你想要的 - 基本上你总是将文本框值设置为“0”。如果你没有一个点(忽略任何先前的输入),而NumBox1.Text 永远不会成为null - 但你需要为自己解决这个问题。

编辑:使用IndexOf一次调用不会告诉您是否出现多次.。一种简单的方法是:

if (text.IndexOf('.') != text.LastIndexOf('.'))
{
    ...
}