RTL проблема в строке, содержащей английский, иврит и цифры в Android (Java) - PullRequest
0 голосов
/ 08 декабря 2018

У меня проблема при смешивании в одну строку английского, иврита и цифр.Порядок цифр рядом с ивритом меняется на противоположный, независимо от того, какой порядок я делаю - первая цифра, а затем текст, сначала текст, а затем иврит - он меняется на: на левой цифре, на правом тексте.Мой текстовый пример:

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 ;

результат будет таким же ...

Любойидеи?Похоже, что-то простое, что мне не хватает

enter image description here

1 Ответ

0 голосов
/ 08 декабря 2018

Здесь ничего не напортачили, это на самом деле правильное поведение.Номер идет после конца еврейского слова - конец еврейского слова находится слева.То, что вы, кажется, хотите, чтобы число было перед еврейским словом.Но когда вы комбинируете его с английским, как это, он не знает, что число должно быть связано с еврейской частью, а не с английской, так что перенос его до еврейского также не работает.

Я бы предложил поставить число перед частью на иврите и заключить число и текст на иврите в символы юникода справа налево, чтобы четко указать, что 8 - это часть текста справа налево.

В качестве альтернативы вы могли быставьте число после текста на иврите, но используйте знак rtl перед ивритом и знак ltr после.Вероятно, это немного лучший способ сделать все в целом, если вы хотите более сложное встраивание в другом месте.

...