
所以,你可以从图像中看到,我把a,c和b连在一起,我得到了我期望的结果。但是在第二次印刷中,当我连接a,e和b时,我最终得到了e,而不是我所期望的地方。我想知道,这种行为的原因和解决办法。提前谢谢你。
import java.util.*;
public class prob
{
public static void main(String... args)
{
String a="الف",b="1/2",c="ب",e="B";
System.out.println(a+" : "+c+" : "+b);
System.out.println(a+" : "+e+" : "+b);
}
}编辑(解释为什么我的问题不是重复的):我的问题是如何将L2R语言转换为R2L。
发布于 2015-10-19 15:33:45
这是因为第一个字符是R2L (在亚洲语言中是从右向左的方向),所以下一个字符在开头(正确的方向):
第一季度:
الف
// actual orientation ←加在L处的第二个焦炭
// add ←
B : الف
// actual orientation →在此之后,B和欧洲一样是L2R,所以在B后面添加下一个字符(1/2)的方向是正确的:
// → add in this direction
B : 1/2 : الف
// actual orientation → (still)您可以轻松地通过复制、粘贴字符和手动写来测试它,您将看到方向的变化取决于您插入的字符。
更新:
我对这个问题的解决方案是什么,因为我做这个示例只是为了说明我在做一些大型报告时所面临的问题,在这些报告中,数据有时是混合的,有时是L2R字符串,有时是R2L。我想严格地用这种格式做一个字符串。
来自这个答案
因此,在java中,要将像阿拉伯语这样的RTL语言嵌入到LTR语言(如英语)中,您可以这样做。
myEnglishString + "\u202B" + myArabicString + "\u202C" + moreEnglish做相反的事
myArabicString + "\u202A" + myEnglishString + "\u202C" + moreArabic见(来源材料)
加法2:
char l2R = '\u202A';
System.out.println(l2R + a + " : " + e +" : "+b);输出:
الف : B : 1/2发布于 2015-10-19 15:38:03
正如在这个回答中已经说过的,原因是一些字符串有一个从右到左的方向。
您可以使用\u200e control character手动将字符串的方向设置为从右到左的从右到右的方向,例如:
String a="\u200eالف",b="1/2",c="\u200eب",e="B";
System.out.println(a+" : "+c+" : "+b);
System.out.println(a+" : "+e+" : "+b);https://stackoverflow.com/questions/33218234
复制相似问题