public String[] split(String sourceStr,String regex){
String[] xzkb=new String[sourceStr.length()];//这句是定义一个数组比如sourceStr是我很爱你,你很爱我,我们爱对方
int i=0;
int k=0;
for(i=0;i<sourceStr.length();i++){
int j=sourceStr.indexOf(regex,i);//寻找regex在sourceStr中i位置以后出现的位置(regex就是逗号)
if (j<=0) break;//返回的j是4
xzkb[k]=sourceStr.substring(i,j);//sourceStr.substring(0,4)结果xzkb[0]=我很爱你
k++;
i=j+regex.length()-1;//这句是什么意思呢?为什么加regex.length()-1,regex是逗号字符啊 它没有长度啊 ?我不明白
}
if(i<sourceStr.length())//这里的长度是剩下的字符串 ,你很爱我,我们爱对方 的长度吗?
         {
xzkb[k]=sourceStr.substring(i,sourceStr.length());
k++;
}
String[] s=new String[k];
for(i=0;i<k;i++)
s[i]=xzkb[i];
return s;
}

解决方案 »

  1.   

    i=j+regex.length()-1;这句话的意思就是下一个循环从当前匹配的位置后开始再匹配。
      

  2.   

    楼上的 我还是有点不明白你的意思regex 长度是1 减去1是0 j+0还是等于0 再回去FOR循环 有i++ 不是多次一举 我决的这句多余的!!
      

  3.   

    你应该打几个输出来看看它的运行过程
    1、第一次循环后j=4
    i=j+regex.length()-1=4
    即从第五个字符开始往后在查找
    2、i<sourceStr.length()
    sourceStr.length()是整个字符串长度
    此时的i是最后一个regex的位置
    这个判断是避免regex在字符串末尾的情况