C# IndexOf 特殊波斯语字符

ami*_*110 2 c# indexof

在波斯语/阿拉伯语字符中,某些字符可选地位于其他字符的顶部或底部,例如 \xd9\x90 \xd9\x8e \xd9\x91 \xd9\x8f.

\n\n

在我的例子中,如果我使用这个字符,indexOf找不到我的单词。认为波斯语/阿拉伯语是 RTL 语言。

\n\n

例如:

\n\n
\xd9\x85\xd9\x86\xd9\x91\xd9\x85 => \xd9\x85 + \xd9\x86 + \xd9\x91 + \xd9\x85\n\nC#:\n\n"\xd9\x85\xd9\x86\xd9\x91\xd9\x85".IndexOf("\xd9\x85\xd9\x86");\nreturn -1\n\njavascript:\n
Run Code Online (Sandbox Code Playgroud)\n\n

\r\n
\r\n
\xd9\x85\xd9\x86\xd9\x91\xd9\x85 => \xd9\x85 + \xd9\x86 + \xd9\x91 + \xd9\x85\n\nC#:\n\n"\xd9\x85\xd9\x86\xd9\x91\xd9\x85".IndexOf("\xd9\x85\xd9\x86");\nreturn -1\n\njavascript:\n
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n\n

C# 中发生了什么。任何人都可以解释这个吗?

\n

Ase*_*l S 5

通过StringComparison.Ordinal作为参数传递给重载String.IndexOf(),您还可以执行以下操作:

\n\n
"\xd9\x85\xd9\x86\xd9\x91\xd9\x85".IndexOf("\xd9\x85\xd9\x86", StringComparison.Ordinal); // returns 0\n
Run Code Online (Sandbox Code Playgroud)\n