2015-04-16 2 views
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] 

Есть ли способ печати арабские символы в последовательности слева -правильное направление без явного изменения списка перед выходом?

+1

Если над «фактическим выходом» часть является правильной, кажется, массив реверсирование ее элементов на своем собственном. –

+1

@SashaSalauyou снова проверьте действительные и ожидаемые результаты. Я намеревался напечатать его обычно слева направо в виде английских букв, но на самом деле он был отменен на выходе. – vanilla

+0

@GeorgeT да, это было отменено, но я не хочу, чтобы оно было отменено, потому что текст не отображается как выровненный. – vanilla

ответ

10

Вы должны добавить left-to-right mark '\u200e' перед каждым символом 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) + "]"; 
} 
+0

Будет ли он работать без собственного цикла, если вы напишете System.out.println ("\ u200eArArray:" + ar). У меня нет терминала, который поддерживает AR, поэтому я не могу попробовать себя. – Torben

+0

@Torben Я попытался добавить его непосредственно перед всем выходом, но он не работает. Мне удалось только добавить его перед каждым арабским персонажем. –

+0

@SashaSalauyou Great !! он работает так, как ожидалось. большое спасибо – vanilla

Смежные вопросы