Объединение строк, содержащих арабские и западные символы

Я пытаюсь объединить несколько строк, содержащих арабские и западные символы (смешанные в одной строке). Проблема в том, что результатом является строка, которая, скорее всего, семантически верна, но отличается от того, что я хочу получить, потому что порядок символов изменяется двунаправленным алгоритмом Unicode. По сути, я просто хочу объединить, как если бы все они были LTR, игнорируя тот факт, что некоторые из них являются RTL, своего рода «агностической» конкатенацией.

Я не уверен, был ли я ясен в своем объяснении, но я не Не думаю, что смогу сделать это лучше.

Надеюсь, кто-нибудь может мне помочь.

С уважением,

Карлос Феррейра

Кстати, строки получаются из базы данных.

EDIT

enter image description here

Первые 2 строки - это строки, которые я хочу объединить, а третья - результат.

EDIT 2

На самом деле объединенная строка немного отличается от строки на изображении, она была изменена во время копирования + вставки, 1 находится после первого A, а не непосредственно перед вторым A.

27
задан Carlos Ferreira 30 May 2011 в 14:36
поделиться

1 ответ

Весьма вероятно, что вам нужно вставить коды направленного форматирования Unicode в вашу строку, чтобы правильно отобразить строку. Подробнее см. Коды направленного форматирования спецификации двунаправленного алгоритма Unicode.

Может быть, класс Bidi может помочь вам в определении правильной последовательности, поскольку он реализует двунаправленный алгоритм Unicode.

2
ответ дан 28 November 2019 в 05:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: