论坛首页 编程语言技术论坛

java-63-在字符串中删除特定的字符

浏览 2678 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-03-05  

public class DeleteSpecificChars {

	/**
	 * Q 63 在字符串中删除特定的字符
	 * 输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
	 * 例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”
	 */
	public static void main(String[] args) {
		String strSource="They are students";
		String strDelete="aeiou";
		String result=deleteSpecificChars(strSource,strDelete);
		System.out.println(result);
	}

	/*
	 * 1.use a 'hashtable' to record the letters to be delete
	 * 2.use two pointers to shrink the source string:
	 * replace the letter to delete with the following letter not to delete
	 */
	public static String deleteSpecificChars(String strSource,String strDelete){
		char[] charSource=strSource.toCharArray();
		char[] charDelete=strDelete.toCharArray();
		int sLen=strSource.length();
		int dLen=strDelete.length();
		int[] exist=new int[256];
		for(int i=0;i<dLen;i++){
			char letter=charDelete[i];
			exist[letter]++;
		}
		int pSlow=0,pFast=0;
		while(pFast<sLen){
			char curLetter=charSource[pFast];
			if(exist[curLetter]==0){//should not delete 
				charSource[pSlow]=charSource[pFast];
				pSlow++;
			}
			pFast++;
		}
		return new String(charSource,0,pSlow);//unlike c/c++,we can only form a string in this way
	}
}

   发表时间:2012-03-05  
System.out.println("They are students.".replaceAll("[aeiou]", ""));
0 请登录后投票
   发表时间:2012-03-05  
Reset 写道
System.out.println("They are students.".replaceAll("[aeiou]", ""));


原来java里面已经有这个方法了

不过,java的方法好像有点复杂:

An invocation of this method of the form str.replaceAll(regex, repl) yields exactly the same result as the expression

Pattern.compile(regex).matcher(str).replaceAll(repl)
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics