C# 为什么搜索文本的索引不正确?

C# 为什么搜索文本的索引不正确?,c#,C#,我正在使用IndexOf查找文本中的字符。我的文本包含一些特殊字符: 这是我的代码: string text = "123<g>ٕ</g>"; int iPosEnd = text.IndexOf(">"); string text=“123ٕ”; int iPosEnd=text.IndexOf(“>”); 结果: iPosEnd=10 为什么IndexOf未在位置5处找到字符?string。IndexOf(string

我正在使用
IndexOf
查找文本中的字符。我的文本包含一些特殊字符:

这是我的代码:

string text = "123<g>ٕ</g>";
int iPosEnd = text.IndexOf(">");
string text=“123ٕ”;
int iPosEnd=text.IndexOf(“>”);
结果:

iPosEnd=10

为什么
IndexOf
未在位置5处找到字符?

string。IndexOf(string)
进行区域性敏感搜索。这意味着它可以在比较字符时组合字符。您将在以下文档页面中找到有关字符串比较的更多信息:

如果希望此方法返回5,可以使用
char
重载或使用
StringComparison.Ordinal

string text = "123<g>ٕ</g>";
int iPosEnd1 = text.IndexOf(">"); // 10
int iPosEnd2 = text.IndexOf('>'); // 5
int iPosEnd3 = text.IndexOf(">", StringComparison.Ordinal); // 5
string text=“123ٕ”;
int iPosEnd1=text.IndexOf(“>”);//10
int iPosEnd2=text.IndexOf('>');//5.
int iPosEnd3=text.IndexOf(“>”,StringComparison.Ordinal);//5.

因为第五个字符是
ٕ
而不是
?它看起来像是一个不同的字符…和你一样特别indicated@CinCout,“>ٕ”是2个字符。@DT两个字符占一个空格?
text.IndexOf(“>”,StringComparison.Ordinal)
谢谢,使用StringComparison.Ordinal就可以了。