此前,一直觉得做笔记不重要,好了,我错了,从今起认真做笔记记录渣渣的自己
题目:将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解答如下:1.将输入的字符串转换为字符数组,此时需要一个方法叫做 toCharArray()
Scanner in = new Scanner(System.in);
char[] str = in.nextLine().toCharArray();
if(str == null || str.length<0){
return;
}
此时当然要确定一下输入的str不是个空的咯(每次输入的,我认为都应该判断一下!)
2.之后便是要计算字符串中有几个空格,以确定加上%20之后的字符串的长度
int i=0;
int numberOfBlack = 0;
for(i=0;i<str.length;i++){
if(str[i] == ' '){
numberOfBlack++;
}
}
int oriLength = str.length-1;
int afterLength = str.length + numberOfBlack*2;
3.在确定afterLength之后,此时我用了另一个数组str1,str1的长度是afterLength,采用从后往前的法子,一个字符一个字符给前走,当str[oriLength]遇着空格时,str1就将‘0’ ‘2’ ‘%’一个一个的赋值;当没有空格时,就使用else中的赋值一次。
(之所以用的--afterLength,是因为我定义的str1的长度是afterLength,而数组的最后一个索引为afterLength-1)
char[] str1 = new char[afterLength];
while(oriLength >= 0) { //替换空格
if(str[oriLength] == ' ') {
str1[--afterLength] = '0';
str1[--afterLength] = '2';
str1[--afterLength] = '%';
}
else {
str1[--afterLength] = str[oriLength];
}
oriLength--;
}
System.out.println(str1);
4.最后打印出来验证是否如题所求。