当前位置: 代码迷 >> J2SE >> 求援,一个简单正则表达式的写法
  详细解决方案

求援,一个简单正则表达式的写法

热度:134   发布时间:2016-04-24 13:10:22.0
求助,一个简单正则表达式的写法
我有一个字符串:A,B,"a,b,c",C
现在需要吧双引号中间的逗号去掉。但是又不确定双引号中间部分有几个逗号,因为这部分是金额。
我需要把这个串分割,双引号之间的逗号会影响分割。
高手给指点下谢谢。

------解决方案--------------------
Java code
    public static void main(String[] args) {                        String s = "A,B, \"0, b, c\",C , \"4, 5, 6, 7,7, 9\"";                        String[] ss = s.split("\"[0-9A-Za-z,\\s]*\"");        int offset = 0;        int from = 0, to = 0;        StringBuffer sb = new StringBuffer();        int i = 0;        for (; i < ss.length; ++i) {            offset = s.indexOf(ss[i]);            from = offset + ss[i].length();            if (i == ss.length - 1) {                to = s.length();            } else {                to = s.indexOf(ss[i + 1], offset);            }                        String m = s.substring(from, to);            m = m.replaceAll(",", "");            m = m.replaceAll(" ", "");            sb.append(s.substring(offset, from));            sb.append(m);                    }                System.out.println(sb.toString());                            }
------解决方案--------------------
呵呵

Java code
分隔用:",(?![^\"]*\"\\s*(?:,|$))"替换用:",(?=[^\"]*\"\\s*(?:,|$))"
------解决方案--------------------
[Quote=引用:]
Java code
 public static void main(String[] args) throws IOException { String str="A,B,\"aaaaaaaaa,bbb,ccccc\",C"; System.out.println(str); String[] str3 = str.split("(? <!(,\"\\w{0,10})),(?!(\\w{0,10}\",))"); for(int i=0;i <str3.length;i++){ System.out.println(str3[i]); } }