输入字符串并用“20%”替换字符串中所有的空格——Java实现

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


猜你喜欢

转载自blog.csdn.net/qq_40409115/article/details/80432239