实现一个函数,将用户输入的字符串中的空格替换为“%20”。
例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
java代码如下所示:
package experie;
import java.util.Scanner;
public class Solution {
public static void main(String[] args) {
Solution main01=new Solution();
Scanner sc=new Scanner(System.in);
String str1=sc.nextLine();
//str为位用户输入的字符串
System.out.println("用户输入的字符串为:"+str1);
String str=main01.replaceSpace(new StringBuffer(str1));
System.out.println("经过替换函数替换后的字符串为:"+str);
}
public String replaceSpace(StringBuffer str) {
if(str==null || str.length()<0){
return null;
}
//求字符串的实际长度和空格的数目
int oldStrNum; //记录原字符串的长度
int blanckNum=0; //空格的数量
int i=0;
//便利原先的字符串 找出字符串的长度以及其中的空格的数量
for (oldStrNum=0; oldStrNum<str.length(); oldStrNum++){
//charAt() 方法用于返回指定索引处的字符。索引范围为从 0 到 length() - 1。
if(str.charAt(oldStrNum)==' '){
blanckNum++;
}
}
//新字符串的长度
int newStrNum=oldStrNum+2*blanckNum;
//设置两个指针oldStrIndex和newStrIndex分别指向原字符串和新字符串的末尾位置
int oldStrIndex =oldStrNum-1;
int newStrIndex=newStrNum-1;
//因为'\0'已经手工加到最后新串的最后一个字符,所以减1咯
char newCharArr[]=new char[newStrNum];
while(oldStrIndex>=0){
if(str.charAt(oldStrIndex)==' '){
newCharArr[newStrIndex--]='0';
newCharArr[newStrIndex--]='2';
newCharArr[newStrIndex--]='%';
}else{
newCharArr[newStrIndex--]=str.charAt(oldStrIndex);
}
oldStrIndex--;
}
//这个方法返回一个代表包含在字符数组参数相同的字符序列新分配的字符串
//即 将数组中的数据转换为字符串
String newStr=String.valueOf(newCharArr);
return newStr;
}
}
StringBuffer方法实现
StringBuffer的替换功能:
public StringBuffer replace(int start,int end,String str):从start开始到end用str替换
java代码如下:
public String replaceSpace(StringBuffer str) {
if(str==null)
{
return null;
}
for(int i=0;i<str.length();i++)
{
char c = str.charAt(i);
if(c==' ')
{
str.replace(i,i+1,"%20");
}
}
String newstr = str.toString();
return newstr;
}
结果测试图1:
结果测试图2: