c# - C#中的双字节字符串比较

标签 c# .net unicode string-comparison

我有两个字符串,一个是双字节值,另一个是单字节值。字符串比较结果返回false,如何在忽略单字节/双字节差异的情况下正确比较?

string s1 = "smatsumoto11"
string s2 = "smatsumoto11"

在相同的场景中,如果您在 SQL Server 中有一个 nvarchar 列,其中包含值 smatasmototo11,使用 where 条件获取数据的查询具有字符串 smatsumoto11 将返回同一行。我需要与 C# 字符串比较类似的语义。

我尝试了 MSDN 上提到的几个选项,但它们似乎不起作用。

有什么想法吗?

最佳答案

您的 s1 包含所谓的“全角”字符,因此您可以使用 string.Compare 并告诉它忽略字符宽度:

string.Compare(s1, s2, CultureInfo.CurrentCulture, CompareOptions.IgnoreWidth);

(当然,如果需要,指定一个不同的CultureInfo。)

关于c# - C#中的双字节字符串比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4142394/

相关文章:

c - 在 C 中打印希腊字符

c# - 使用 ItemAppearing 事件在 ListView 中向下滚动会跳过 Xamarin.Forms 中的记录

c# - 在文档 SP URL 中查找单词

c# - 使用 openxml 删除 x 命名空间

.net - 为 SignalR 实现背板和消息总线

unicode - 在脚本中使用重定向将产生unicode输出。如何发出单字节ASCII文本?

c# - 如何使用SAPI 5控制第三方文字转语音?

c# - 检查 IEnumerable 上的字符串

.net - ScriptBlock 未在 PowerShell 中执行

python - 无法在 OSX 终端和 ncurses 上显示警告标志