Java 如何从左向右打印阿拉伯字符

Java 如何从左向右打印阿拉伯字符,java,unicode,left-to-right,Java,Unicode,Left To Right,我有一系列英文和阿拉伯文文本,应该以对齐的方式打印 例如: List<Character> ar = new ArrayList<Character>(); ar.add('ا'); ar.add('ب'); ar.add('ت'); List<Character> en = new ArrayList<Character>(); en.add('a'); en.add('b'); en.add('c'); System.out.println

我有一系列英文和阿拉伯文文本,应该以对齐的方式打印

例如:

List<Character> ar = new ArrayList<Character>();
ar.add('ا');
ar.add('ب');
ar.add('ت');

List<Character> en = new ArrayList<Character>();
en.add('a');
en.add('b');
en.add('c');

System.out.println("ArArray: " + ar);
System.out.println("EnArray: " + en);   
List ar=new ArrayList();
ar.加上(‘ا’);
ar.加上(‘ب’);
ar.加上(‘ت’);
List en=新的ArrayList();
en.添加(‘a’);
en.添加(‘b’);
en.添加(‘c’);
System.out.println(“ArArray:+ar”);
System.out.println(“EnArray:+en”);
预期输出:

ArArray: [ت, ب, ا] // <- I want characters to be printed in the order they were added to the list
EnArray: [a, b, c]
ArArray: [ا, ب, ت] // <- but they're printed in reverse order
EnArray: [a, b, c]
array:[ت,ب,ا]/您需要在每个RTL字符之前添加,以便打印LTR:

public String printListLtr(List<Character> sb) {
    if (sb.size() == 0) 
        return "[]";
    StringBuilder b = new StringBuilder('[');
    for (Character c : sb) {
        b.append('\u200e').append(c).append(',').append(' '); 
    }
    return b.substring(0, b.length() - 2) + "]";
}
公共字符串printListLtr(列表sb){
如果(sb.size()==0)
返回“[]”;
StringBuilder b=新的StringBuilder(“[”);
for(字符c:sb){
b、 追加('\u200e')。追加(c)。追加(',')。追加('');
}
返回b.substring(0,b.length()-2)+“]”;
}

如果上面的“实际输出”部分是正确的,那么数组似乎在自己反转其元素。@请再次检查实际输出和预期输出。我本来打算以英文字母的形式从左到右正常打印,但实际上它在输出中被颠倒了。@GeorgeT是的,它被颠倒了,但我不希望它被颠倒,因为文本没有显示为对齐。@vanilla我只是好奇你为什么需要这个?你的问题很模糊,请为您的问题添加一个更好的描述--“无需反转数组”。此外,这是一个列表,而不是数组。如果您编写System.out.println(“\u200earray:+ar”),它是否可以在没有自制循环的情况下工作。我没有支持AR的终端,所以我不能自己尝试。@Torben我试图在整个输出之前添加它,但它不起作用。我只在每个阿拉伯字符前面加上它才成功。回答得好。您还可以创建一个扩展ArrayList并用该代码覆盖“.toString()”的新类。@JanTheGun
elementData
ArrayList
中的数组是私有的,因此无法从子类访问。当然,我可以通过迭代器收集元素,但是。。。这是一个为那些需要这个的人准备的主意。嗯,我刚刚试了一下,效果很好。在overwritedtostring()方法中,我使用了“this”而不是“sb.size”。我仍然想知道为什么它不恢复英文版本(在这种情况下很好)。