我正在使用.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);
}
我得到以下输出
ABC [CITY] مرحبا بالعالم
ABC سنغافورة مرحبا بالعالم
您可以看到,城市而不是被放置在ABC的最右边。
此问题仅适用于阿拉伯语,适用于其他语言(英语/泰语/西班牙语等)
不确定这是怎么回事。
答案 0 :(得分:2)
使用此答案:This
我已经为此编辑了您的代码
public static void Main()
{
Console.WriteLine("Hello World");
var replace = "سنغافورة";
var input = "York Hotel في [CITY] – عروض الغرف، صور وتقييمات";
Console.WriteLine(input);
var lefttoright = ((Char)0x200E).ToString();
var final = input.Replace("[CITY]", lefttoright + replace + lefttoright );
Console.WriteLine(final);
}
输出为:
Hello World
York Hotel في [CITY] – عروض الغرف، صور وتقييمات
York Hotel في سنغافورة – عروض الغرف، صور وتقييمات
引用@Takarii:
Char 0x200E是一个特殊字符,它告诉以下文本: 从左到右see here阅读有关该字符的更多信息。
答案 1 :(得分:1)
只需在阿拉伯文本的开头添加一个RTL标记:
public static void Main()
{
Console.WriteLine("Hello World");
const char rtl = (char)0x200E;
var replace = "سنغافورة";
var input = "York Hotel في [CITY] – " + rtl + "عروض الغرف، صور وتقييمات";
Console.WriteLine(input);
var final = input.Replace("[CITY]", replace);
Console.WriteLine(final);
}
更新: 通过了这里的答案:https://stackoverflow.com/a/44961348/6193089