如[基本工资]+[奖金]-[保险]....这样一个字符串
如何将所有中括号内的内容截取出来,请高手指点。

解决方案 »

  1.   

    先string.split("+")再子串的string.split("-")再string.split("[")还有string.split("]")
    我知道这样...
    不过用java的StringTokenizer("[基本工资]+[奖金]-[保险]","\\[\\]\\+\\-");一下就搞定
      

  2.   

    var s = "[基本工资]+[奖金]-[保险]";
    var ret = splitX(s);
    for (var i = 0; i < ret.length; i++)
    {
    alert(ret[i]);
    }
    function splitX(s) {
    var ret = new Array();
    if (s == null || s == "")
    {
    return ret;
    }
    var idx1, idx2, i = 0;
    while ((idx1 = s.indexOf("[")) > -1 && idx1 != s.length - 1)
    {
    idx2 = s.indexOf("]");
    if (idx2 > idx1)
    {
    ret[i] = s.substring(idx1 + 1, idx2);
    i++;
    s = s.substring(idx2);
    } else {
    s = s.substring(idx1);
    }
    }
    return ret;
    }
      

  3.   

    用正则最简单,也最正规!
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Test {
      public static void main(String[] args) {
        Pattern p = Pattern.compile("\\[(.*?)\\]");
        String str = "[基本工资]+[奖金]-[保险]";
        Matcher m = p.matcher(str);
        while (m.find()) {
          System.out.println(m.group(1));
        }
      }
    }
      

  4.   


                function test(){
                    var reg = /\[(.*?)\]/gi;
                    var str = "[基本工资]+[奖金]-[保险]";
                    var tmp = str.match(reg);
                    if (tmp) {
                        for (var i = 0; i < tmp.length; i++) {
                            alert(tmp[i]); // 保留中括号
    alert(tmp[i].replace(reg, "$1")); // 不保留中括号
                        }
                    } else {
                        alert("no match.");
                    }
                }