如何 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();
或类似的。
我正在使用以下代码:
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();
或类似的。