我在连接混合西方和阿拉伯字符的文本时遇到麻烦。
我有这样的令牌列表:
-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/中介绍。