如何以高效和更好的方式替换Java中的空格

时间:2016-02-20 18:33:11

标签: java regex

我提到了这个链接

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。有没有有效的方法呢?

4 个答案:

答案 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] );
}