将英语,希伯来语和数字混入一个字符串时出现问题。 希伯来语旁边的数字顺序被颠倒了,无论我按什么顺序-首先是数字,然后是文本,首先是文本,然后是希伯来语-它被颠倒为:左边的数字,右边的文本。 我的文字示例是:
String leftPart = "10 gr";
int numder = 8;
String hebrewText = "כפות";
String rightPart = hebrewText + " " + number;
String finalString = leftPart + " · " + rightPart; //10 gr · כפות 8
我想在此字符串的末尾显示数字8,在希伯来语单词之后,而不是在它之前,但是即使在这里,我也无法执行此操作...由于乞讨中的英文文本,它被颠倒了
即使我将订单更改为:
String rightPart = number + " " + hebrewText ;
结果是一样的...
有什么想法吗?看来我缺少了一些简单的东西
答案 0 :(得分:1)
这里没有任何问题,这实际上是正确的行为。数字在希伯来语单词的结尾之后-希伯来语单词的结尾在左边。您似乎想要的是该数字出现在希伯来语单词之前。但是,当您将其与英语结合使用时,它不知道该数字应该绑定到希伯来语部分,而不是英语部分,因此将其置于希伯来语部分也不起作用。
我建议将数字放在希伯来语部分的前面,然后将数字和希伯来语文本以unicode的方式从右到左标记字符包装起来,以明确地告诉它8是右到左文本的一部分。
或者,您可以将数字放在希伯来文字之后,但在希伯来语之前使用rtl标记,在其之后使用ltr标记。如果您想在其他地方进行更复杂的嵌入,则这可能是总体上更好的处理方式。
答案 1 :(得分:0)
与希伯来语混合使用时,迫使英语很好地显示的提示:
用LRI和PDI包裹英语(或数字)词(请在此处检查:https://unicode.org/reports/tr9/)。
例如,代替这些(第一个单词为英语):
<string name="test">ABC היא האפליקציה הכי טובה</string>
<string name="test2">%1$s היא האפליקציה הכי טובה</string>
使用这些:
<string name="test">\u2066ABC\u2069 היא האפליקציה הכי טובה</string>
<string name="test2">\u2066%1$s\u2069 היא האפליקציה הכי טובה</string>
其他有用的可以在这里找到