日期:2014-05-20  浏览次数:20685 次

正则的奇怪问题???
StringBuilder   sb   =   new   StringBuilder( " <!--fkls--> faaa ");
Pattern   p   =   Pattern.compile( " <!--.+?--> ");
Matcher   m   =   p.matcher(sb);
while   (m.find())
        sb.delete(m.start(),   m.end());

为什么总在m.find()这报错StringIndexOutOfBoundsException????

------解决方案--------------------
//创建一个初始长度是used的StringBuffer,但他并没实际内容
//此时sbuf1.lenght()=0
StringBuffer sbuf1=new StringBuffer(used);
//此时你在位置j放入字符1,肯定会出现StringIndexOutOfBoundsException错误
sbuf1.setCharAt(j, '1 ');

sbuf1.setCharAt(int pos,char c)的使用条件是pos

------解决方案--------------------
while (m.find()){
sb.delete(m.start(), m.end());//这里已经改变sb了,while里面m.find针对的是原先的sb
m = p.matcher(sb);
}

或者改用if