java将字符串根据分隔符转换成字符串数组

public class AnalyticalStr
{
    /**
     * 使用StringTokenizer类将字符串按分隔符转换成字符数组
     * @param string 字符串 
     * @param divisionChar 分隔符
     * @return 字符串数组
     * @see [类、类#方法、类#成员]
     */
    public static String[] stringAnalytical(String string, String divisionChar)
    {
        int i = 0;
        StringTokenizer tokenizer = new StringTokenizer(string, divisionChar);
        
        String[] str = new String[tokenizer.countTokens()];
        
        while (tokenizer.hasMoreTokens())
        {
            str[i] = new String();
            str[i] = tokenizer.nextToken();
            i++;
        }
        
        return str;
    }
    
    /**
     * 字符串解析,不使用StringTokenizer类和java.lang.String的split()方法
     * 将字符串根据分割符转换成字符串数组
     * @param string 字符串
     * @param c 分隔符
     * @return 解析后的字符串数组
     */
    public static String[] stringAnalytical(String string, char c)
    {
        //字符串中分隔符的个数
        int count = 0;
        
        //如果不含分割符则返回字符本身
        if (string.indexOf(c) == -1)
        {
            return new String[]{string};
        }
        
        char[] cs = string.toCharArray();
        
        //过滤掉第一个和最后一个是分隔符的情况
        for (int i = 1; i < cs.length -1; i++)
        {
            if (cs[i] == c)
            {
                count++; //得到分隔符的个数
            }
        }
        
        String[] strArray = new String[count + 1];
        int k = 0, j = 0;
        String str = string;
        
        //去掉第一个字符是分隔符的情况
        if ((k = str.indexOf(c)) == 0)
        {
            str = string.substring(k + 1);
        }
        
        //检测是否包含分割符,如果不含则返回字符串
        if (str.indexOf(c) == -1)
        {
            return new String[]{str};
        }
        
        while ((k = str.indexOf(c)) != -1)
        {
            strArray[j++] = str.substring(0, k);
            str = str.substring(k + 1);
            if ((k = str.indexOf(c)) == -1 && str.length() > 0)
            {
                strArray[j++] = str.substring(0);
            }
        }
        
        return strArray;
    }
    
    public static void main(String[] args)
    {
        String str = "数据1,数据2,数据3,数据4,数据5,数据6";
        
        for (String tmp : AnalyticalStr.stringAnalytical(str, ','))
        {
            System.out.println(tmp);
        }
    }
}


你可能感兴趣的:(Java基础)