如何 trim 编码的字符串?

How to trim an encoded String?

我正在使用以下代码:

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,但它已经被编码为从使用其他编码的其他 restcall 收到的。

使用s.trim();并将其存储在一个新变量中,然后使用该新变量。它应该开始工作了。

Does trim() method of String class work with encoded string?

不,原因很简单,Java 无法区分编码字符串和恰好包含编码字符序列的字符串。 URL 编码只是无数编码中的一种,如果字符串是在任何特定编码中编码的值,则尝试计算是不可行的。

如果你想trim一个编码的字符串,你必须先解码它,然后 trim它,然后重新编码它。


但请注意 s.trim(); 不会更新 s。字符串是不可变的。您需要分配 s = s.trim(); 或类似的。