6. 替换空格
题目:请实现一个函数,把字符串中的每个空格替换成“20%”。例如输入“hellow new world!”,则输出“hellow02%new02%world!”。
分析:
-
正常我们会想到,在基础上遍历这个字符串,遇到空格就将其和其后两位改成 ‘%20’ ,但是这会造成大量的移动
-
开一个辅助数组,来进行
-
在原字符串上,从后遍历,然后替换(推荐)
/** * Class day06 ... * * @author LiJun * Created on 2018/12/22 */ // 替换空格 public class day06 { /** * 遍历知道出这个字符串的空格数 * * @param string 目的字符串 * @return int 空格数 */ public int blankSum(String string) { int count = 0; for (int i = 0; i < string.length(); i++) { if (" ".equals(String.valueOf(string.charAt(i)))) { count++; } } return count; } /** * 转换空格并输出 * @param string */ public void replaceBlank(String string) { // 参数有效性检查 if (string == null || string.length() <= 0) { System.out.println("参数错误!"); return; } int orignLength = string.length(); // 加长后的字符串长度 int newStringLength = orignLength + blankSum(string)*2; char[] array = new char[newStringLength]; System.arraycopy(string.toCharArray(), 0, array,0, string.toCharArray().length); int indexOfOriginal = orignLength-1; int indexNew = newStringLength-1; while(indexOfOriginal >= 0 && indexNew > indexOfOriginal){ if(array[indexOfOriginal] == ' '){ array[indexNew --] = '0'; array[indexNew --] = '2'; array[indexNew --] = '%'; }else { array[indexNew--] = array[indexOfOriginal]; } indexOfOriginal--; } string = new String(array); for(int i = 0; i < array.length; i++){ System.out.print(array[i]); } System.out.println(); } public static void main(String[] args) { day06 day06 = new day06(); String string = "we are people!"; day06.replaceBlank(string); System.out.println(string); String string1 = string.replace(" ", "%20"); // 恶补下知识 // java中 字符串的替换函数 replaceAll 和 replaceFirst 使用到了正则表达式 // 但是 replace 没有使用正则表达式 System.out.println(string1); } }
补充:java 中传参
- 基础类型 传的是值
- 对象 传的是对象的引用