test[10000]
我想取出10000 以及前面的test
怎么定位,因前面的test长度不是固定的,
看来用java的人好少啊
自己解决了,不知道还有没有更高效的。请指教
(sarr[0].substring(0,sarr[0].indexOf("[")));
(sarr[0].substring(sarr[0].indexOf("[")+1,sarr[0].indexOf("]")));
如果,只是类似你这个字符串,是个类似数组的变量名,是简单的 \w+就可以了, 主要是你没有说清楚,这个字符串是单独的一个字符串,还是在一堆文本需要提取出来的字符串
final String regex = "\\w+";
final String string = "test[1000]";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
//matcher.group(0) test
//mathcher.group(1) 1000
static String cutOut(String s, String leftBoundary, String rightBoundary) {
int startIndex = s.indexOf(leftBoundary);
int endIndex = s.lastIndexOf(rightBoundary);
if (startIndex >= 0 && endIndex > startIndex) {
return s.substring(startIndex + 1, endIndex);
}
return null;
}
Playground: 3yz2mekfw - Java - OneCompiler
不用正则表达式的O(n)复杂度;
static String cutOut(String s) {
StringBuilder out = new StringBuilder();
StringBuilder in = new StringBuilder();
boolean isOut = true;
char[] sc = s.toCharArray();
for( int i = 0 ; i< sc.length; i ++){
if( sc[i] == '[') isOut = false;
else if( sc[i] == ']') isOut = true;
else {
if( isOut ) out.append(sc[i]);
else in.append(sc[i]);
}
}
return isOut? in.toString() : "";
}
4 回答1.1k 阅读✓ 已解决
4 回答712 阅读✓ 已解决
1 回答2.5k 阅读✓ 已解决
1 回答1.1k 阅读✓ 已解决
2 回答661 阅读✓ 已解决
2 回答1.2k 阅读
2 回答1.6k 阅读
95% 以上的文本查找,替换,匹配相关的需求都可以通过正则表达式解决。