问题描述:给定一个字符串,将字符串中的空格替换为“%20”。
解一:利用JavaAPI中String类的replaceAll()实现。
代码如下:
public class 替换字符串中的空格 {
public static void main(String[] args){
String str = "no consoles to display";
System.out.println(str.replaceAll(" ", "%20"));
}
}
提交结果:
解二:手写算法实现替换功能。因为Java中字符串是常量,所以我们先算出替换后的字符串长度。因为%20比空格多两个字符,所以字符串中每有一个空格,替换后的字符串长度就加2。得到长度后我们就可以建立一个字符数组,按照字符串从后面开始添加,遇到空格就添加%20。
代码如下:
public class 替换字符串中的空格 {
public static void main(String[] args){
String str = "no consoles to display";
System.out.println(replaceSpace(str));
}
private static String replaceSpace(String str) {
int len = str.length();
for(int i=0; i<str.length(); i++){
if(str.charAt(i)==' ') len = len + 2;
}
char[] s = new char[len];
int k = str.length()-1;
for(int i=len-1; i>=0;){
if(str.charAt(k)==' '){
s[i-2] = '%';
s[i-1] = '2';
s[i] = '0';
i = i-3;
k--;
}else{
s[i] = str.charAt(k);
i--;
k--;
}
}
return new String(s);
}
}
提交结果: