.Net中的Unicode字符串,带有希伯来字母和数字

Yar*_*evi 7 .net c# string unicode unicode-string

尝试创建包含希伯来字母和数字的字符串时会出现奇怪的行为.数字将始终显示在字母左侧.例如:

string A = "\u05E9"; //A Hebrew letter
string B = "23";
string AB = A + B;
textBlock1.Text = AB;
//Ouput bug - B is left to A.
Run Code Online (Sandbox Code Playgroud)

只有在使用希伯来字母和数字时才会出现此错误.从等式中省略其中一个时,错误不会发生:

string A = "\u20AA"; //Some random Unicode.
string B = "23";
string AB = A + B;
textBlock1.Text = AB;
//Output OK.

string A = "\u05E9"; //A Hebrew letter.
string B = "HELLO";
string AB = A + B;
textBlock1.Text = AB;
//Output OK.
Run Code Online (Sandbox Code Playgroud)

我尝试使用FlowDirection属性,但它没有帮助.

在第一个代码例子中正确显示文本的解决方法将受到欢迎.

Avi*_*man 14

为此目的精确地创建了unicode字符"RTL标记"(U + 200F)和"LTR标记"(U + 200E).

在您的示例中,只需在希伯来字符后面放置一个LTR标记,然后数字将显示在希伯来字符的右侧,如您所愿.

所以你的代码将调整如下:

string A = "\u05E9"; //A Hebrew letter
string LTRMark = "\u200E"; 
string B = "23";
string AB = A + LTRMark + B;
Run Code Online (Sandbox Code Playgroud)


Yar*_*evi 0

string A = "\u05E9"; //A Hebrew letter
string B = "23";
string AB = B + A; // !
textBlock1.Text = AB;
textBlock1.FlowDirection = FlowDirection.RightToLeft;
//Ouput Ok - A is left to B as intended.
Run Code Online (Sandbox Code Playgroud)