我在连接混合西方和阿拉伯字符的文本时遇到麻烦。

我有这样的令牌列表:

-LRB-
دریای
مازندران
-RRB-
,


我使用以下过程来连接这些标记列表:

String str = "";
for (String tok : tokens) {
    str += tok + " ";
}


这是我的过程的输出:

-LRB- دریای مازندران -RRB- ,


可以看出,阿拉伯语单词的位置是相反的。
我该如何解决(也许建议Java忽略有关文本方向的信息)?

编辑

实际上,看来我的问题是假问题。
现在我有一个新的。我需要将每个单词包装在这样的字符串中,例如(word *),这样我的输出将如下所示:

(word1 *)(word2 *)(word3 *)...


我使用的过程如下:

String str = "";
for (String tok : tokens) {
    str += "(" + tok + "*)";
}


但是,我得到的结果是这样的:

(-LRB- *)(دریای *)(مازندران *)(-RRB- *)(, *)


代替:

(-LRB- *)(دریای)(* مازندران *)(-RRB- *)(, *)


**编辑2 **
实际上,我发现我的问题不是问题。我将字符串写在文件上,然后使用nano(在控制台中)将其打开。并已正确连接。

因此,问题是由于Eclipse控制台(以及gedit)导致的-可以说-错误地呈现了字符串。

无论如何,谢谢您的帮助!

最佳答案

输出是正确的,并且如果您要向讲阿拉伯语的用户显示此文本,则不应覆盖文本的方向性。阿拉伯语从右到左书写。当您将两个阿拉伯字符串连接在一起时,第一个将出现在第二个的右侧。这由BiDi算法控制,其详细信息在http://www.unicode.org/reports/tr9/中介绍。

07-24 09:50
查看更多