【问题标题】:IndexOf bug when string contains 'AA'字符串包含 'AA' 时的 IndexOf 错误
【发布时间】:2011-08-16 09:24:37
【问题描述】:

我遇到了一个奇怪的问题。我有一个字符串,其值包含 'AA'。 我试图找到 IndexOf 第一个 accouring A。当我询问字符串 Contains("A") 是否返回 true。使用 IndexOf("A") 时,我不断得到默认值 -1(见下图)

到目前为止,我测试只有“A”和“a”有问题。 在字符串中放入 3 个 a 时,我得到数字 3 的索引,就好像前两个不存在一样。

当向字符串添加额外的 a 时,我再次得到默认值 -1。

我不知道是什么原因造成的,我怀疑它与某种语言设置有关。我来自丹麦,字母 aa 的使用是 å 的同义词。

有没有其他人遇到过类似的问题或有如何避免它的建议?

系统信息:

Windows 7 Ultimate(英文)

Visual Studio 10 高级版

【问题讨论】:

  • 您可能想要为您正在谈论的语言添加标签。
  • 尝试 indexOf 与 StringComparison.InvariantCulture

标签: string visual-studio-2010 indexof


【解决方案1】:

'aa' 如果文化是 da-DK,则作为实体处理。这个问题有点重复,请参阅String StartsWith() issue with Danish text

【讨论】:

    【解决方案2】:

    嗯,我现在也试过了。它有效...

        static void XYZ()
        {
            string a = "aaa";
            string b = "AAA";
    
            if(a.Contains("a"))
            {
                Console.WriteLine(a.IndexOf("a"));
            }
            if(b.Contains("A"))
            {
                Console.WriteLine(b.IndexOf("A"));
            }
        }
    

    但是寻找“aa”和“AA”不是最好的吗?我会说丹麦语,而且我知道也有单个 a ;-)

    【讨论】:

    • 问题的原始准确度的上下文是在一个依赖于动态值的应用程序中,所以搜索'aa'并不能解决问题。提出问题是希望避免原因,以防止问题在应用程序中的其他地方出现。
    猜你喜欢
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 2019-08-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    相关资源
    最近更新 更多