Как изменить направление строки Java с Ltr на RTL? - PullRequest
0 голосов
/ 20 февраля 2019

Я пытаюсь изменить direction с ltr на rtl на строку, используя язык программирования Java.Моя строка

String newString = "\nالفرع: الفرع الرئيسي\n" +
            "***********************************\n" +
            "التاريخ والوقت: 2019/01/0218:01\n" +
            "نوع الحركة: مبيعات مضخات  \n" +
            "رقم الفاتورة: 14\n" +
            "طريقة الدفع: نقد  \n" +
            "المضخة: م 1 ك 1\n" +
            "\n" +
            "\n" +
            "نوع الوقود: بنزين 95\n" +
            "الكمية: 2.830\n" +
            "السعر: 1.060\n" +
            "الإجمالي: 3.000\n" +
            "\n" +
            "***********************************\n" +
            "          شكرا لزيارتكم\n" +
            " \n" +
            " ";

1 Ответ

0 голосов
/ 20 февраля 2019

Вы пытаетесь изменить формат, который требует изменения в строке.Используйте String.format с заданной шириной, которая добавит необходимые пробелы, чтобы выровнять вашу строку вправо или влево, как вам нужно:

static String align(String str, int width, boolean right){
    String[] temp = str.split("\n");
    String frmt = "";
    if(right){
        frmt = "%" + width + "s";
    }
    else{
        frmt = "%-" + width + "s";
    }

    for(int i=0; i<temp.length; i++)
        temp[i] = String.format(frmt, temp[i]);
    return String.join("\n", temp);
}

public static void main(String[] args) {
    String newString = "\nالفرع: الفرع الرئيسي\n" +
                "***********************************\n" +
                "التاريخ والوقت: 2019/01/0218:01\n" +
                "نوع الحركة: مبيعات مضخات  \n" +
                "رقم الفاتورة: 14\n" +
                "طريقة الدفع: نقد  \n" +
                "المضخة: م 1 ك 1\n" +
                "\n" +
                "\n" +
                "نوع الوقود: بنزين 95\n" +
                "الكمية: 2.830\n" +
                "السعر: 1.060\n" +
                "الإجمالي: 3.000\n" +
                "\n" +
                "***********************************\n" +
                "          شكرا لزيارتكم\n" +
                " \n" +
                " ";
    System.out.println(align(newString, 35, false));

}

Ширина здесь установлена ​​на 35, вы можете установить ее на что угоднонеобходимость.̶T̶h̶e̶ ̶ ̶-̶ ̶ ̶w̶i̶l̶l̶ ̶a̶l̶i̶g̶n̶ ̶i̶t̶ ̶t̶o̶ ̶t̶h̶e̶ ̶r̶i̶g̶h̶t̶̶выравнивать ли вправо или влево, как это видно при изменении переменной frmt.


Редактировать 2: знак - выровняется по левому краю, если язык ltr, и по правому краю, если язык rtl.Арабский (как показано в вашем примере) - это rtl, и поэтому вам нужно выровнять его в противоположность тому, что есть в английском.Я обновил функцию с исправленным кодом.Для языков RTL (арабский) используйте align(string, width, false), а для языков LTR используйте align(string, with, true)

...