替换字符串中的空格
思路: 有两种方法,一种是直接调用javaApi的形式替换字符串中的空格,另外一种是自己写,思路:先遍历字符串,用count来记录空格变换成%20后的长度,然后设定两个指针p1,p2进行调换。
具体思路:
”Mr John Smith0000000000000000000000“
- 将字符串转成字符数组
"Mr John Smith0000000000000000000000".toCharArray()
- 遍历iniString[]数组,根据’ '来增加count的长度。
- 原本count长度为
int count = length;(13)
此时count的长度为17 - 设定
p1 = length-1(12);
p2 = count-1(16)
while(p1>=0)
遍历p1Mr John Smith
|Mr John Smith0000000000000000000000
- 从后面开始判断,如果是字符就往后移动,如果是空格就在后面加上%20,干完一件事都要p1–。 记得是在16的位置
Mr John Smith000h000000000000000000
Mr John Smith00th000000000000000000
Mr John Smith0ith000000000000000000
Mr John Smithmith000000000000000000
Mr John SmitSmith000000000000000000
Mr John S%20Smith000000000000000000
Mr John n%20Smith000000000000000000
Mr Johnhn%20Smith000000000000000000
Mr Johohn%20Smith000000000000000000
Mr JoJohn%20Smith000000000000000000
Mr%20John%20Smith000000000000000000
- 最后截取0~count的长度即可
/*
请编写一个方法,将字符串中的空格全部替换为"%20",假定该字符串有足够的空间存放新增的字符
并且知道字符串的真实长度(小于等于1000),同时保证字符串由大小写的英文字母组成。
给定一个string iniString 为原始的串,以及串的长度 int len,返回替换后的string。
测试样例:
"Mr John Smith",13
返回:"Mr%20John%20Smith"
"Hello World",12
返回:"Hello%20%20World"
*
* */
public class 替换字符串中的空格 {
public static void main(String[] args){
System.out.println(replaceSpace("Mr John Smith0000000000000000000000".toCharArray(),13));
}
public static String replaceSpace(String iniString, int length){
return iniString.replaceAll("\\s","%20");
}
public static String replaceSpace(char[] iniString, int length) {
int count = length;
for (int i = 0; i < length; i++) {
if (iniString[i]==' '){
count+=2;
}
}
int p1 = length-1;
int p2 = count-1;
while(p1>=0){
if (iniString[p1]==' '){
iniString[p2--]='0';
iniString[p2--]='2';
iniString[p2--]='%';
}else {
iniString[p2--]=iniString[p1];
}
p1--;
}
return new String(iniString,0,count);
}
}