如何使我的字符串比较不敏感(忽略)空白区域的微小差异?

Ian*_*ose 8 .net string unit-testing

我有一些测试检查显示给用户的字符串.

我不希望测试由于压痕或换行符等的变化而失败.所以我正在寻找像字符串比较那样的东西.

  • 忽略空格作为字符串的开头(易于使用string.trim)
  • 当任何数量的任何类型的空白彼此相邻时,其匹配方式与单个空格相同.

我可以开始创建一个正则表达式,但其他人可能有一个更好的解决方案因此这个问题.

PVi*_*itt 24

您可以使用CompareOptions:

String.Compare(a, b, CultureInfo.CurrentCulture, CompareOptions.IgnoreSymbols);
Run Code Online (Sandbox Code Playgroud)

从MSDN中提取:

指示字符串比较必须忽略符号,例如空格字符,标点符号,货币符号,百分号,数学符号,&符号等.

  • 我想这取决于"abc def"是否与"abcdef"不同(这是**仅仅是相邻的空格变化),以及"x + y"是否与"x*y"不同 (6认同)
  • 虽然这确实很有趣,但它显然不太适合OP的要求。 (2认同)

Mar*_*ell 6

如果你需要它编写自定义比较是棘手为空格做到这一点.我建议使用正则表达式进行标准化,即

private static readonly Regex normalizeSpace =
        new Regex(@"\s+", RegexOptions.Compiled);
...
string s = normalizeSpace.Replace(input, " ");
Run Code Online (Sandbox Code Playgroud)

显然,将两个操作数标准化,然后正常测试相等性.