在控制台输入字符串,并用%20替换所有的空格。
例如:
输入:hello world ! hello lemon!
输出:hello%20world!%20hello%20lemon!
分析:针对此问题来说,我们应该先找到字符串中的空格,然后对空格进行替换操作。
解法一:找到字符串所有的空格
直接利用String类中提供的replaceAll()方法
public class day01 {
static String oldString;
public static void main(String[] args) {
System.out.println("输入只含大小写的字符串:");
Scanner scanner = new Scanner(System.in);
oldString = scanner.nextLine();
System.out.println(replaceString(oldString));
}
//利用已知函数实现
public static String replaceString(String oldString) {
String newString = oldString.replaceAll(" ", "%20");
return newString;
}
}
解法二:其实就是自己实现替换操作罢了。
step1:创建新字符串,对原字符串进行遍历,每遍历一个对新字符串用空字符串填 补,若是空格记录空格数目,并且在新字符串处再追加两个空字符串。
step2:利用两个索引来对字符串的一个一个字符进行拷贝。
public class day01 {
static String oldString;
public static void main(String[] args) {
System.out.println("输入只含大小写的字符串:");
Scanner scanner = new Scanner(System.in);
oldString = scanner.nextLine();
StringBuffer stringBuffer = new StringBuffer(oldString);
System.out.println(myReplaceString(stringBuffer));
}
//利用自定义函数实现
public static String myReplaceString(StringBuffer oldString) {
//记录源字符串长度
int oldLen = 0;
//记录新字符串长度
int newLen = 0;
//记录空格数目
int spaceNum = 0;
StringBuffer newString = new StringBuffer();
System.out.println(newString);
for(int i = 0 ;i < oldString.length();i++) {
oldLen++;
newString.append(" ");
if(oldString.charAt(i) == ' ') {
spaceNum++;
newString.append(" ");
}
}
//新字符串的长度
newLen = oldLen + spaceNum*2;
//记录当前旧字符串的位置
int indexOldSignal = 0;
//记录当前新字符串的位置
int indexNewSignal = 0;
for(int i = 0;i < oldLen;i++) {
if(oldString.charAt(i) != ' ') {
newString.setCharAt(indexNewSignal++ ,oldString.charAt(indexOldSignal));
}else {
newString.setCharAt(indexNewSignal++, '%');
newString.setCharAt(indexNewSignal++, '2');
newString.setCharAt(indexNewSignal++, '0');
}
indexOldSignal++;
}
return newString.toString();
}
}