我正在尝试连接多个同时包含阿拉伯文和西方字符的字符串(混合在同一个字符串中)。问题是结果是一个字符串,它很可能在语义上是正确的,但与我想要获得的不同,因为字符的顺序被 Unicode 双向算法改变了。基本上,我只想像它们都是 LTR 一样连接,而忽略了一些是 RTL 的事实,一种“不可知的”连接。
我不确定我的解释是否清楚,但我认为我不能做得更好。
希望有人可以帮助我。
亲切的问候,
卡洛斯·费雷拉
顺便说一句,正在从数据库中获取字符串。
编辑
前 2 个字符串是我要连接的字符串,第三个是结果。
编辑 2
实际上,拼接后的字符串与图片中的略有不同,它在复制+粘贴过程中发生了变化,1 在第一个 A 之后,而不是在第二个 A 之前。
最佳答案
您可以使用 unicode 格式控制代码点嵌入双向区域:
- 从左到右的嵌入 (U+202A)
- 从右到左嵌入 (U+202B)
- 流行定向格式 (U+202C)
所以在 java 中,要将像阿拉伯语这样的 RTL 语言嵌入到像英语这样的 LTR 语言中,你会这样做
myEnglishString + "\u202B" + myArabicString + "\u202C" + moreEnglish
反之亦然
myArabicString + "\u202A" + myEnglishString + "\u202C" + moreArabic
见 Bidirectional General Formatting更多详情,或the Unicode specification chapter on "Directional Formatting Codes"为源 Material 。
关于java - 包含阿拉伯和西方字符的字符串连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6177294/