10

整列して印刷する必要がある一連の英語とアラビア語のテキストがあります。

例えば:

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);   

期待される出力:

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]

出力前にリストを明示的に逆にすることなく、アラビア文字を左から右の方向に印刷する方法はありますか?

4

1 に答える 1

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) + "]";
}
于 2015-04-16T10:40:04.127 に答える