如何从左到右的方向打印阿拉伯字符

van*_*lla 10 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("ArArray: " + ar);
System.out.println("EnArray: " + en);   
Run Code Online (Sandbox Code Playgroud)

预期产出:

ArArray: [?, ?, ?] // <- I want characters to be printed in the order they were added to the list
EnArray: [a, b, c]
Run Code Online (Sandbox Code Playgroud)

实际产量:

ArArray: [?, ?, ?] // <- but they're printed in reverse order
EnArray: [a, b, c]
Run Code Online (Sandbox Code Playgroud)

有没有办法在从左到右的方向打印阿拉伯字符而不在输出之前明确地反转列表?

Ale*_*you 11

您需要在每个RTL字符之前添加从左到右的标记'\u200e'以使其打印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) + "]";
}
Run Code Online (Sandbox Code Playgroud)