JavaScript эквивалент unescape в Java - PullRequest
1 голос
/ 06 мая 2020

Я хочу найти замену javascript unescape в java

Я пробовал это, но у меня это не сработало

String cadena = "%u0032%u0038";
System.out.println(URLDecoder.decode(cadena, "UTF-8"));

1 Ответ

2 голосов
/ 06 мая 2020

Реализуйте метод unescape() самостоятельно.

В Java 11+ вы можете сделать это следующим образом:

public static String unescape(String s) {
    return Pattern.compile("%u([0-9A-Fa-f]{4})|%([0-9A-Fa-f]{2})").matcher(s).replaceAll(m ->
            Character.toString(Integer.parseInt(m.group(m.start(1) != -1 ? 1 : 2), 16)));
}

В более ранних версиях Java используйте:

public static String unescape(String s) {
    StringBuffer buf = new StringBuffer();
    Matcher m = Pattern.compile("%u([0-9A-Fa-f]{4})|%([0-9A-Fa-f]{2})").matcher(s);
    while (m.find())
        m.appendReplacement(buf, new String(new int[] { Integer.parseInt(m.group(m.start(1) != -1 ? 1 : 2), 16) }, 0, 1));
    return m.appendTail(buf).toString();
}

Тест

String cadena = "%u0032%u0038";
System.out.println(unescape(cadena));

Выход

28
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...