C#.Replace()方法不适用于阿拉伯语

Yas*_*ser 8 c#

我正在使用.Replace()替换[CITY]阿拉伯语占位符的方法。

public static void Main()
{
    Console.WriteLine("Hello World");
    var replace = "????????";
    var input = "ABC [CITY] ????? ???????";
    Console.WriteLine(input);
    var final = input.Replace("[CITY]", replace);
    Console.WriteLine(final);
}
Run Code Online (Sandbox Code Playgroud)

我得到以下输出

ABC [CITY] ????? ???????
ABC ???????? ????? ???????
Run Code Online (Sandbox Code Playgroud)

如您所见,在最右边添加了城市而不是放置在ABC旁边。

此问题仅适用于阿拉伯语,适用于其他语言(英语/泰语/西班牙语等)

不知道这里出了什么问题。

C#提琴-https: //dotnetfiddle.net/mvIcHt

Mik*_*kev 2

使用这个答案:这个

\n\n

我已经为此编辑了您的代码:

\n\n
public static void Main()\n{\n    Console.WriteLine("Hello World");\n    var replace = "\xd8\xb3\xd9\x86\xd8\xba\xd8\xa7\xd9\x81\xd9\x88\xd8\xb1\xd8\xa9";\n    var input = "York Hotel \xd9\x81\xd9\x8a [CITY] \xe2\x80\x93 \xd8\xb9\xd8\xb1\xd9\x88\xd8\xb6 \xd8\xa7\xd9\x84\xd8\xba\xd8\xb1\xd9\x81\xd8\x8c \xd8\xb5\xd9\x88\xd8\xb1 \xd9\x88\xd8\xaa\xd9\x82\xd9\x8a\xd9\x8a\xd9\x85\xd8\xa7\xd8\xaa";\n    Console.WriteLine(input);\n    var lefttoright = ((Char)0x200E).ToString();\n    var final = input.Replace("[CITY]", lefttoright + replace + lefttoright );\n    Console.WriteLine(final);\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

输出是:

\n\n
Hello World\nYork Hotel \xd9\x81\xd9\x8a [CITY] \xe2\x80\x93 \xd8\xb9\xd8\xb1\xd9\x88\xd8\xb6 \xd8\xa7\xd9\x84\xd8\xba\xd8\xb1\xd9\x81\xd8\x8c \xd8\xb5\xd9\x88\xd8\xb1 \xd9\x88\xd8\xaa\xd9\x82\xd9\x8a\xd9\x8a\xd9\x85\xd8\xa7\xd8\xaa\nYork Hotel \xd9\x81\xd9\x8a \xe2\x80\x8e\xd8\xb3\xd9\x86\xd8\xba\xd8\xa7\xd9\x81\xd9\x88\xd8\xb1\xd8\xa9\xe2\x80\x8e \xe2\x80\x93 \xd8\xb9\xd8\xb1\xd9\x88\xd8\xb6 \xd8\xa7\xd9\x84\xd8\xba\xd8\xb1\xd9\x81\xd8\x8c \xd8\xb5\xd9\x88\xd8\xb1 \xd9\x88\xd8\xaa\xd9\x82\xd9\x8a\xd9\x8a\xd9\x85\xd8\xa7\xd8\xaa\n
Run Code Online (Sandbox Code Playgroud)\n\n

引用@Takarii:

\n\n
\n

Char 0x200E 是一个特殊字符,它告诉下面的文本从左到右阅读,有关该字符的更多信息请参阅此处。

\n
\n