题目要求:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解题思路:
1.确认使用for循环结构。
2.方法一:直接遍历string中所有字符,将空格替换为“%”输出结果;
方法二:将string转化为数组,然后进行遍历,将空格替换为“%20”,输出结果;
具体代码:
public static void main(String[] args) {
Scanner scanner =new Scanner(System.in);
System.out.println("请输入字符串");
String Str=scanner.nextLine();
//1.遍历str所有字符
String newStr="";
for (int i = 0; i < Str.length(); i++) {
if (Str.charAt(i)==' ') {
newStr=newStr+"%20";
}
else newStr=newStr+Str.charAt(i);
}
System.out.println(newStr);
//2.将str转化为数组然后遍历,原理同1一致
int numSpace=0;
char[] arrayStr=Str.toCharArray();
for (int i = 0; i < arrayStr.length; i++) {
if (arrayStr[i]==' ') {
numSpace++;
}
}
char[] newArrayStr=new char[arrayStr.length+2*numSpace];//确定替换空格后新数组大小
int n=0;
for (int i = 0; i < arrayStr.length; i++) {
if (arrayStr[i]==' ') {
newArrayStr[n]='%';
n++;
newArrayStr[n]='2';
n++;
newArrayStr[n]='0';
}
else newArrayStr[n]=arrayStr[i];
n++;
}
System.out.println(String.valueOf(newArrayStr));
}
}
实际结果
补充:当然最简单的可以使用库函数ReplaceAll解决本题。
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
System.out.println("输入字符串: ");
String str =scanner.nextLine(); //获取string.
String newstr =str.replace(" ", "%20");//使用库函数直接替换空格为字符串“%20”
System.out.println(newstr);
}
}
实际结果