Write a method to replace all spaces in a string with ‘%20’

时间:2021-01-23 16:49:55

Write a method to replace all spaces in a string with ‘%20’.


/**
 * InterTest
 * cn.ustc.inter.array_string
 * ReplaceSpace.java
 * @version 1.0.0
 * 2012-4-11  下午1:52:36
 * Copyright (c) ustcxjt
 * 
 */
package cn.ustc.inter.array_string;

import java.util.ArrayList;

/**
 * 
 * ReplaceSpace
 * 
 * Author:ustcxjt Modify by ustcxjt Date:2012-4-11 下午1:52:36
 * 
 * @version 1.0.0
 * 
 */
public class ReplaceSpace {

	public static char[] ReplaceFun(char[] str) {
		System.out.println(str);
		ArrayList<Character> tmp = new ArrayList<Character>();
		int i = 0;
		for (char ch : str) {
			if (ch == ' ') {
				tmp.add('%');
				tmp.add('2');
				tmp.add('0');
				i++;
			} else {
				tmp.add(ch);
			}
		}

		char[] re = new char[str.length + 2 * i + 1];

		for (i = 0; i < tmp.size(); i++) {
			re[i] = tmp.get(i);
		}

		return re;
	}

	/**
	 * main(这里用一句话描述这个方法的作用) (这里描述这个方法适用条件 – 可选)
	 * 
	 * @param args
	 *            void
	 * @exception
	 * @since 1.0.0
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = "a aaa aabbbbddd fff ";
		System.out.println(ReplaceSpace.ReplaceFun(str.toCharArray()));
	}

}

ArrayList<Character> tmp转换成字符数组

使用tmp.toString().toCharArray()

System.out.println(tmp.toString().toCharArray());

输出

[a, %, 2, 0, a, a, a, %, 2, 0, a, a, b, b, b, b, d, d, d, %, 2, 0, f, f, f, %, 2, 0]

不是想要的结果

于是采用了

for (i = 0; i < tmp.size(); i++) {
re[i] = tmp.get(i);
}

谁有不用重新遍历的方法

请告诉我