今天笔试的时候遇到个问题:
写个通用的方法用来分割字符串
方法原型为: 
public String[] split(String str,char ch){

不能用String类的split方法 

解决方案 »

  1.   

    答:能不能用indexOf(...)方法呢?若能用,则用:indexOf(ch)循环一分割不就行了。
      

  2.   

    代码参考如下:(使用了indexOf(..))import java.util.*;
    public class TestSplitString { public String[] split(String str,char ch){ 
    ArrayList<String> al=new ArrayList<String>();
    int start=0,pos=-1;
    while( (pos=str.indexOf(ch,start))!=-1  )
    {
    al.add(str.substring(start,pos));//将start到pos之间子串取出
    start=pos+1;
    }
    if(start<str.length())//最后一个子串
    {
    al.add(str.substring(start));
    }
    return al.toArray(new String[0]);


    public static void main(String[] args) {
    TestSplitString tsp=new TestSplitString();
    String[] ss=tsp.split("aaabbcccbddd", 'b');
    for(String e:ss)
    {
    System.out.println(e);
    }
           System.out.println(ss.length);
    }}
    运行结果:
    aaaccc
    ddd
    4
      

  3.   


    //做了个可以用字符串替换的~可以扩展一下
    package org;import java.util.ArrayList;
    public class Csdn {
        public String[] split(String str,String s){ 
            ArrayList<String> list=new ArrayList<String>();
            StringBuilder sb = new StringBuilder(str);
            int length = s.length();
            int start = 0;
            int end = 0;
            while((end=sb.indexOf(s, start))!=-1){
             list.add(sb.substring(start, end));
             start=end+length;
            }
            list.add(sb.substring(start));
            return list.toArray(new String[list.size()]);
            
        } 
        public static void main(String[] args) {
            Csdn tsp=new Csdn();
            String[] ss=tsp.split("zhaolrrzhaolrrzhao", "lrr");
            for(String e:ss)
            {
                System.out.println(e);
            }
           System.out.println(ss.length);
        }
    }