首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

括号内有分隔符的字符串分割解决思路

2012-03-20 
括号内有分隔符的字符串分割如何分割括号内有分隔符的字符串?就是要无视掉括号中的分隔符比如Java codepub

括号内有分隔符的字符串分割
如何分割括号内有分隔符的字符串?
就是要无视掉括号中的分隔符
比如

Java code
public class HelloWorld {    public static void main(String[] args) {        String str = "a(1,(2,3),4)b,bc(4,5),(6,7)cd";        /*         * how to get:         *          * 1. a(1,(2,3),4)b         * 2. bc(4,5)         * 3. (6,7)cd         */    }}


[解决办法]
写了一段,一般情况下能用,没考虑特殊情况
Java code
public static void main(String[] e) {        String str = "a(1,(2,3),4)b,bc(4,5),(6,7)cd";        char[] cs = str.toCharArray();        int layer = 0;        List<Integer> indexs = new ArrayList<Integer>();        List<String> strs = new ArrayList<String>();        for(int i = 0; i < cs.length; i++){            if(layer == 0 && ',' == cs[i]){                indexs.add(new Integer(i));            }            if('('== cs[i]){                layer++;            }else if(')'== cs[i] && layer > 0){                layer--;            }        }        for(int i = 0; i < indexs.size(); i++){            if(i == 0){                strs.add(str.substring(0, indexs.get(i)));            }else{                strs.add(str.substring(indexs.get(i - 1) + 1, indexs.get(i)));            }            if( i == indexs.size() - 1){                strs.add(str.substring(indexs.get(i) + 1));            }        }                for(String ss : strs){            System.out.println(ss);        }    }
[解决办法]
Java code
//改一个bugpublic static void main(String[] args) {        String str = "a(1,(2,3),4)b,bc(4,5),(6,7)cd,qwqw";        String arr[] = str.split(",(?=[^)(]*?(\\([^)(]*?\\),?)*[^)(]*$)");        for(int i=0;i<arr.length;i++){            System.out.println(arr[i]);        }    } 

热点排行