【问题标题】:Bool test on a string gives unexpected result对字符串的布尔测试给出了意想不到的结果
【发布时间】:2013-07-14 13:55:02
【问题描述】:

这应该是不言自明的。我正在尝试检测字符串 foo 的第一个字符是否为负号“-”。这只是一个测试代码来测试它。

 private void button1_Click(object sender, EventArgs e)
    {
        string foo = textBox1.Text;
        bool negativeValue = foo[1]==('-');
        //bool negativeValue = foo[1].Equals ('-');

        if (negativeValue == true)
        {
            label1.Text = "First char is negative !";
        }

        else if (negativeValue == false)
        {
            label1.Text = "First char is not negative !";
        }
    }

即使文本框中的第一个字符是“-”,结果也始终为 false。为什么?

【问题讨论】:

标签: c# boolean


【解决方案1】:

C# 中的索引查找是从零开始的。所以你应该打电话:

foo[0] == ('-')

使用1 将查找 字符。

编辑:也可以作为替代方案(也许更清楚),您可以随时使用:

foo.StartsWith("-")

不管你有多醉,这应该有效。 :)

(此外,如果您想避免用户输入中出现过多/意外的前面空格,请考虑修剪文本输入)

【讨论】:

  • 天哪,Windows 将我切换到 加拿大 ÈEnglishÈ,让我切换回来。
  • 这里已修复。严重地。我讨厌这种废话。因为“加拿大英语”的真正意思是“法语”,而且喜欢(似乎)随意切换。
  • 如我所说,我今天不喝酒了。
【解决方案2】:

您使用了错误的索引。1 您实际上指的是第二个字符

使用0

 bool negativeValue = foo[0]==('-');

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2019-05-19
  • 2017-01-05
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 2021-12-17
  • 2021-04-22
  • 2016-02-13
相关资源
最近更新 更多