在控制台输入字符串,并用%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(); } }