我提到了这个链接
http://www.crazyforcode.com/replace-spaces-string-%20/
并且在Stackoverflow中找不到任何类似的Java实现
我已经实现了一个类似的逻辑,使用下面的代码将空格替换为%20
。
String sen="I need to replace all the spaces to %20";
String[] arr = sen.split(" ");
StringBuffer buff = new StringBuffer();
for (String str : arr) {
buff.append(str);
buff.append("%20");
}
但逻辑上存在许多问题,例如它会在每个句子的最后添加%20
。有没有有效的方法呢?
答案 0 :(得分:2)
最好和最有效的方法是使用内置库为您实现此功能。你可以使用
java.net.URLEncoder
您可以在http://docs.oracle.com/javase/8/docs/api/java/net/URLEncoder.html#encode-java.lang.String-java.lang.String-或https://docs.oracle.com/javase/7/docs/api/java/net/URLEncoder.html
找到API答案 1 :(得分:0)
如果您不想使用预定义方法,请执行以下操作:
String str = "t e s t";
str = str.replace(" ", "%20");
System.out.println(str);
这将打印出“t%20e%20s%20t”。
答案 2 :(得分:0)
您可以尝试对StringBuffer的输出进行子串。
String sen = "I need to replace all the spaces to %20";
String[] arr = sen.split(" ");
StringBuffer buffer = new StringBuffer();
for (String str : arr) {
buffer.append(str);
buffer.append("%20");
}
String bufferString = buffer.toString();
String stringWithoutSpaces = bufferString.substring(0, bufferString.length() - 3);
但另一个更简单的解决方案是:
sen = sen.trim().replaceAll(" ", "%20");
答案 3 :(得分:0)
不了解Java,但如果它有点像c ++,请使用最快的方法 它可能是老式的,但仍然是最快的。
伪代码
buff = "";
if ( arr.size() > 0 ) {
buff = arr[0];
for (int i=1; i<arr.size(); i++)
buff.append("%20" + arr[i] );
}