方法一:
使用String的replaceAll方法。
public class Solution {
public String replaceSpace(StringBuffer str) {
String string=str.toString();
return string.replaceAll(" ","%20");
}
}
方法二:
使用split()方法以空格为分隔符时,split()识别在String开头出现的空格,但不识别在结尾出现的空格(只针对” “)。
方法三:
在当前字符串替换,怎么替换才更有效率(不考虑java里现有的replace方法)。
从前往后替换,后面的字符要不断往后移动,要多次移动,所以效率低下
从后往前,先计算需要多少空间,然后从后往前移动,则每个字符只为移动一次,这样效率更高一点。
public String replaceSpace(StringBuffer str) {
int count=0;
int oldlength=str.length();
for(int i=0;i<oldlength;i++)
{
if(str.charAt(i) == ' ')
count++;
}
if(count == 0)
return str.toString();
int newlength=oldlength+count*2;
str.setLength(newlength);//扩大StringBuffer的长度,防止下标越界!
int oldindex=oldlength-1;
int newindex=newlength-1;
while(oldindex>=0&&newindex>oldindex)
{
if(str.charAt(oldindex) == ' ')
{
str.setCharAt(newindex--,'0');//setCharAt(int index,char ch)
str.setCharAt(newindex--,'2');
str.setCharAt(newindex--,'%');
}
else
str.setCharAt(newindex--,str.charAt(oldindex));
oldindex--;
}
return str.toString();
}