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); } } } 用正则,可能不好写!但是上面的这种方法,很简单就搞定了!楼主看看!
上面的代码有点问题,因为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); } } }
2,是的呀 怎么提取
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);
}
}
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);
}
}
}
用正则,可能不好写!但是上面的这种方法,很简单就搞定了!楼主看看!
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);
}
}
}
"(^|\\)).*?($|\\((?=\\d|<))")
测试得到5个元素的数组,将第一个和最后一个忽略,凑合用吧