删除字符串问题

**
* 假如有字符串“6sabcsssfsfs33” ,用最有快速的方法去掉字符“ab3”,
* 不能用java内置字符串方法(indeOf,substring,replaceAll等)
*
* @author chouy
*/
public class XunLeiExam1
{
    public static void main(String[] args)
    {
        String str1 = "6sabcsssfsfs33";
        String str2 = "ab3";
        System.out.println(replaceString(str1, str2));
    }
   
    public static String replaceString(String des, String reg)
    {
        StringBuilder buf = new StringBuilder(des.length());
        char[] chars = des.toCharArray();
        char[] regchars = reg.toCharArray();
        for (char c : chars)
        {
            boolean b = true;
            for (char regchar : regchars)
            {
                if (c == regchar)
                {
                    b = false;
                    break;
                }
            }
            if (b)
                buf.append(c);
        }
        return buf.toString();
    }
}


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/10921/showart_2123722.html

 

 

1. 为什么boolean数组的大小声明为256?
其实boolean设为128,也可以,因为这里他就是要大于Ascii码的总数就行,也就是大于128就行,因为这个字符串里的字符都是Ascii码可以包含的
2. removeChars['a'] = true; 这是种什么用法啊,数组不是用下标的吗,比如removeChars[0] = true,怎么直接把字符放俩面了,看不明白,是解析成了ascii吗?removeChars['a']相当于removeChars[97]?
是,Ascii码和数字是相通的,可以相互表示,
char ch = str.charAt(i);  
  if (!removeChars[ch]) 
  sb.append(ch);  
当ch=a时,removeChars[a]就相当于removeChars[97],也就是fasle,然后sb.append(a),就不执行
差不多就是这样

 

你可能感兴趣的:(删除字符串问题)