Как обрезать закодированную строку? - PullRequest
0 голосов
/ 18 октября 2019

Я использую следующий код:

searchKey = URLEncoder.encode(searchKey,"UTF-8");
builder.queryParam("searchKey", searchKey.trim());

Теперь я попробовал:

String s = "hello%20world%20%26%20you%20%20%20%20%20%20";
s.trim();
System.out.println(s);

Вывод:

hello%20world%20%26%20you%20%20%20%20%20%20

Что может бытьвозможный обходной путь?

Примечание: я также думал об обрезке моего searchKey перед кодированием, но он уже закодирован, как получено из другого перезапуска, который использует другое кодирование.

Ответы [ 2 ]

3 голосов
/ 18 октября 2019

Работает ли метод trim () класса String с закодированной строкой?

Нет, по той простой причине, что Java не имеет возможности отличить закодированную строку от строки, которая просто происходитвключить кодированные последовательности символов. Кодировка URL - это всего лишь одно из бесконечного числа кодировок, и было бы невозможно попытаться определить, является ли строка значением, закодированным в каком-либо конкретном случае.

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


Обратите внимание, что s.trim(); не обновляет s. Строки неизменны. Вам нужно будет присвоить s = s.trim(); или подобное.

0 голосов
/ 18 октября 2019

Используйте s.trim(); и сохраните его в новой переменной, а затем используйте эту новую переменную. Это должно заработать.

...