代码之家  ›  专栏  ›  技术社区  ›  Mark

字符串比较。NET和无间断空间

  •  17
  • Mark  · 技术社区  · 17 年前

    我有一个用C#编写的应用程序,它做了很多字符串比较。字符串从各种来源(包括用户输入)中提取,然后进行比较。然而,当我将空格'32'与不间断空格'160'进行比较时,我遇到了问题。对于用户来说,它们看起来是一样的,所以他们希望匹配。但当应用程序进行比较时,没有匹配项。

    5 回复  |  直到 10 年前
        1
  •  39
  •   user127143    17 年前

    为了找到这个简单的答案,我经历了很多痛苦。下面的代码使用正则表达式将非换行空格替换为正常空格。

    string cellText = "String with non breaking spaces.";
    cellText = Regex.Replace(cellText, @"\u00A0", " ");
    

        2
  •  10
  •   John Kraft    17 年前

    它必须是

    text.Replace('\u00A0',' ')
    

    哪里 \u00A0

    这将用正常空间替换非中断空间。

        3
  •  10
  •   Gaurravs    8 年前

    如果是我,我会在“拉动”字符串的同时对其进行“正常化”;可能是一个字符串.Replace()。那么你就不需要在其他任何地方改变你的比较了。

    编辑 马克,这很难。什么是“标准化”字符串,这真的取决于你或你的客户。我也遇到过类似的情况,客户要求这样的字符串:

    I have 4 apples.
    I have four apples.
    

        4
  •  2
  •   Mark Sowul    10 年前

    Equals 方法,有一个静态 String.Equals

        5
  •  -1
  •   John    8 年前

    text.Replace('\u00A0', ' ')