提问人:Daniël Camps 提问时间:10/15/2023 更新时间:10/15/2023 访问量:46
在 C# 中“松散”比较字符串而不区分各种类型的空格的最佳方法是什么?
What is the best way to 'loosely' compare strings in C# without discerning between various types of spaces?
问:
我需要联系一个只回复文本的外部软件。我需要将这段文字解释为一把钥匙。例如,在接收文本时,我需要能够执行以下操作:foo bar
var expectedResult = "foo bar";
if (actualResult == expectedResult) {
// do something
}
我的挑战是外部软件使用的字符与我预期的不同。当我记录它时,它说 ,但 if 语句是错误的。在进一步检查实际字符后,这是因为实际结果使用 unicode 字符,而我在 C# 中输入的字符串使用 ."foo bar"
space
0x0020
no-break space
0x00A0
我已经尝试了一些东西,例如调用 ,和两个字符串,但似乎没有什么可以改变字符内容或评估为 ..Replace(@"\x0020", " ")
.Normalize()
.Equals
true
解决这个问题的好方法是什么?特别要记住,我需要检查多个键,所以我的理想选择是松散比较(例如,没有区分 和 ,也没有区分其他高度相似的键space
no-break space
答:
2赞
Daniël Camps
10/15/2023
#1
所以我打算发布这个问题 - 然后通过发现这不是一个问题来间接解决它 - 并认为我仍然会发布我的发现以潜在地帮助其他人。这是我自己的错。我从本地 Docker 设置的命令行输出中复制了比较字符串,其中包含的字符由于将空格作为 .通过简单地在该字符上按退格键并键入空格键,我就修复了它。var expectedResult = "foo bar";
no-break space
评论