Эквивалентные Функции JavaScript для urllib.quote Python () и urllib.unquote ()

Ваш код имеет некоторую путаницу при обработке символов '{' и '}'. Это должно быть полностью параллельно тому, как вы обрабатываете '(' и ')'.

Этот код, слегка измененный по сравнению с вашим, похоже, работает правильно:

public static boolean isParenthesisMatch(String str) {
    if (str.charAt(0) == '{')
        return false;

    Stack<Character> stack = new Stack<Character>();

    char c;
    for(int i=0; i < str.length(); i++) {
        c = str.charAt(i);

        if(c == '(')
            stack.push(c);
        else if(c == '{')
            stack.push(c);
        else if(c == ')')
            if(stack.empty())
                return false;
            else if(stack.peek() == '(')
                stack.pop();
            else
                return false;
        else if(c == '}')
            if(stack.empty())
                return false;
            else if(stack.peek() == '{')
                stack.pop();
            else
                return false;
    }
    return stack.empty();
}
31
задан Hank Gay 3 June 2009 в 18:09
поделиться

3 ответа

Хорошо, я думаю, я собираюсь использовать гибридный настраиваемый набор функций:

Кодировать : Используйте encodeURIComponent (), затем снова вставьте косую черту.

def unquote_url(url):
    """Decodes a URL that was encoded using quote_url.
    Returns a unicode instance.
    """
    return urllib.unquote(url).decode('utf-8')
6
ответ дан 27 November 2019 в 21:44
поделиться

Попробуйте регулярное выражение. Примерно так:

mystring.replace(/[\xFF-\xFFFF]/g, "%" + "$&".charCodeAt(0));

Это заменит любой символ выше порядкового номера 255 его соответствующим представлением% HEX.

1
ответ дан 27 November 2019 в 21:44
поделиться

Python: urllib.quote

Javascript: unescape

Я не проводил обширного тестирования, но для моих целей это работает большую часть времени. Полагаю, у вас есть какие-то конкретные символы, которые не работают. Возможно, если я использую какой-нибудь азиатский текст или что-то подобное, он сломается :)

Это появилось, когда я гуглил, поэтому я добавил это для всех остальных, если не специально для исходного вопроса.

1
ответ дан 27 November 2019 в 21:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: