wut cho Asked:2020-04-02 16:57:25 +0000 UTC2020-04-02 16:57:25 +0000 UTC 2020-04-02 16:57:25 +0000 UTC IndexOf 的处理是否不正确? 772 此代码返回 0,尽管根据文档它应该返回 -1。难道我做错了什么?.NET 版本是 4.7.1。 Console.WriteLine("Dddd".IndexOf("⚽️", 0)); c# 1 个回答 Voted Best Answer A K 2020-04-02T17:08:44Z2020-04-02T17:08:44Z 我还记得这样一个不明显的“错误”。就在前几天,它再次在哈布雷身上闪现。一般来说,字符串并不是那么容易,当涉及到处理 unicode 的复杂性时,它变得更加困难。 一般来说,Jon Skeet写道,一些 Unicode 字符会中断.IndexOf. 请参阅他的字符串处理指南链接。 如果您需要它按建议工作,那么您需要指定字符串的文化。 通常,一个字符串中有两个字符。一个实际上是我们用眼睛看到的: ⚽ e2 9a bd 但是第二个是不可见的,但是如果你在Linqpad中选择它,你会看到还有一个: (您可以检查 - 它们中的任何一个都足以破坏 IndexOf) 通过专门的工具可以更好地看到它,比如这个。 这是通过Variation Selectors组合字符的标志,与组合字符几乎相同 在Zalgo 文本问题中可以找到一个使用示例。
我还记得这样一个不明显的“错误”。就在前几天,它再次在哈布雷身上闪现。一般来说,字符串并不是那么容易,当涉及到处理 unicode 的复杂性时,它变得更加困难。
一般来说,Jon Skeet写道,一些 Unicode 字符会中断
.IndexOf.请参阅他的字符串处理指南链接。
如果您需要它按建议工作,那么您需要指定字符串的文化。
通常,一个字符串中有两个字符。一个实际上是我们用眼睛看到的:
⚽ e2 9a bd
但是第二个是不可见的,但是如果你在Linqpad中选择它,你会看到还有一个:
(您可以检查 - 它们中的任何一个都足以破坏 IndexOf)
通过专门的工具可以更好地看到它,比如这个。
这是通过Variation Selectors组合字符的标志,与组合字符几乎相同
在Zalgo 文本问题中可以找到一个使用示例。