Как обрабатывать специальные символы, такие как «\ п» в строке обратного?

Обновить

December 2018

Просмотры

943 раз

2

У меня есть следующий код, чтобы изменить строку, и я рассматриваю, чтобы тесты для него. Я хотел бы знать, как вести дела, как, когда пользовательский ввод «\ п», «\ т»?

private static String reverse2(String str) {
    if (str == null || str.length() == 0)
        return str;

    int start = 0;
    int end = str.length() - 1;

    char[] chars = str.toCharArray();
    while (start < end) {
        char tmp = chars[start];
        chars[start] = chars[end];
        chars[end] = tmp;

        start++;
        end--;
    }

    return String.valueOf(chars);
}

4 ответы

3

Почему бы не обратить его вспять с помощью StringBuilder:

string input = "xyz\t\nabc123";
string reversed = new StringBuilder(input).reverse().toString();
2

Ваш вопрос неоднозначный, и ответ не так просто.

Если то , что вы называете пользовательского ввода является Java символьная строка , как "newline -\n-"последовательность \nпревращается в один символ новой строки. При печати строки, вы не видите \nбольше. Вместо этого, далее выход переходит к следующей строке, давая

newline -
-

(11 символов). Восстановление дает

-
- enilwen

Напротив, если пользовательский ввод от клавиатуры, то ускользает не будет распознана и вывод на печать будет строка без изменений.

newline -\n-

(12 символов). Восстановление дает

-n\- enilwen

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

В странных случаях, вы можете восстановить побеги после разворота (так что они становятся видимыми снова), давая преобразования

newline -\n-

(12 символов), то внутренне,

newline -
-

(11 символов), то внутренне вспять,

-
- enilwen

(11 символов), то внешнее

-\n- enilwen

(12 символов). Обратите внимание на разницу с выше n\против \n.

4
 StringBuilder str = new StringBuilder("Java");

    // reverse characters of the StringBuilder and prints it

    System.out.println("reverse = " + str.reverse());
4

В строках, как «\ nxyz», str.toCharArray () лечит «\ п», как один символ. Там не проблема в вашем коде. Единственное место новой линии полукокса изменится, и он будет печатать в другом формате строку на этот раз.

Связанные вопросы