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

来源:互联网 发布:天涯明月刀捏脸数据图 编辑:程序博客网 时间:2024/03/29 14:58
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);        }    }}