哞  不会正则表达式  !!!  好吧   如题:怎么提取出括号里的数字。就本字符串而言我要得到:“1987-2008”   “2004,1989,2006”   “<19”

解决方案 »

  1.   

    1.java
    2,是的呀     怎么提取  
      

  2.   

    来个不用正则的  要求 结贴给全分, 没分了 急着用 多谢。public class SplitString {public static void getStringArray(String source) {
      String[] strs = source.split("&&");
      for(String s:strs){
      System.out.println(delSign(s));
      }
    }
    static String delSign(String s){
    StringBuilder sb = new StringBuilder();

    for(char c:s.toCharArray()){
    if(c !='(' && c !=')' && c !='!' ){
    sb.append(c);
    }
    }


    return sb.toString();
    }
    public static void main(String[] args) {
    String source = "(1987-2008)&&(!(2004,1989,2006))&&(<19)";
    SplitString.getStringArray(source);
    }
    }
      

  3.   

    "(1987-2008)&&(!(2004,1989,2006))&&(<19)".replaceAll("(","").replaceAll(")","").replaceAll("!","").split("&&")
      

  4.   

    "(1987-2008)&&(!(2004,1989,2006))&&(<19)".replaceAll("\\(","").replaceAll("\\)","").replaceAll("\\!","").split("&&");
      

  5.   


    public class Test {
    public static void main(String[] args) {
    String str = "(1987-2008)&&(!(2004,1989,2006))&&(<19)";
    String[] temp = str.split("&&");
    for(String s : temp) {
    int start = s.lastIndexOf("(");//找到最后一个"("的位置,加1就是字符串的开始
    int end = s.indexOf(")");//找到第一个")"的位置,减1就是字符串的结束
    s = s.substring(start + 1, end - 1);
    System.out.println(s);
    }
    }
    }
    用正则,可能不好写!但是上面的这种方法,很简单就搞定了!楼主看看!
      

  6.   

    上面的代码有点问题,因为substring就是从start到end-1的子字符串,所以end就不用减1了。
    public class Test {
    public static void main(String[] args) {
    String str = "(1987-2008)&&(!(2004,1989,2006))&&(<19)";
    String[] temp = str.split("&&");
    for(String s : temp) {
    int start = s.lastIndexOf("(");//找到最后一个"("的位置,加1就是字符串的开
                                                           //始
    int end = s.indexOf(")");//找到第一个")"的位置,就是字符串的结束
    s = s.substring(start + 1, end);
    System.out.println(s);
    }
    }
    }
      

  7.   

    (^|\)).*?($|\((?=\d|<))用"(1987-2008)&&(!(2004,1989,2006))&&(<19)".split(
    "(^|\\)).*?($|\\((?=\\d|<))")
    测试得到5个元素的数组,将第一个和最后一个忽略,凑合用吧