У меня есть метод ниже, который расшифровывает URL-адреса для значения, переданного вместе с использованием кодировки.рекурсивно вызывать метод, но регистрировать только второй раз?
public String decodeValue(String value, Charset charset) {
if (!Strings.isNullOrEmpty(value)) {
try {
value = URLDecoder.decode(value, charset.name());
} catch (UnsupportedEncodingException ex) {
// log error
return null;
}
}
return value;
}
Теперь, если URLDecoder.decode
линия бросает UnsupportedEncodingException
в первый раз, то я хочу, чтобы запустить же value
против ниже три линий:
value = value.replaceAll("%(?![0-9a-fA-F]{2})", "%25");
value = value.replaceAll("\\+", "%2B");
value = URLDecoder.decode(value, charset.name());
И если затем снова URLDecoder.decode
линия бросает исключение во второй раз, то я буду регистрировать но только второй раз и возвращает значение null в противном случае возвращает значение, которое декодируется.
Каков наилучший и элегантный способ сделать это?
Вы ищете любой способ сделать это или самое элегантное решение? – shmosel
Добавление другого блока try/catch, о котором я уже знал. Я искал какой-то лучший или элегантный способ сделать это, если он есть. –
Я предложил изменение, которое кажется отклоненным. Где здесь рекурсия? –