如果给出"(-2)x^(-2)+(3)x^(1)-(18)x^(-45)"
之类的字符串,我将如何使用split()来获取指数?所以这个例子将返回[-2, 1, -45]
。我试图找出正则表达式,但它很令人困惑。我最接近的是string.split("x\\^\\(")
,但它并不是我想要的完全分裂。
答案 0 :(得分:0)
试一试
String str = "(-2)x^(-2)+(3)x^(1)-(18)x^(-45)";
char[] chars = str.toCharArray();
List<String> exponents = new ArrayList<String>();
for(int i=0; i<chars.length; i++) {
if(chars[i] == '^') {
if(++i<chars.length && chars[i] == '(') {
StringBuilder sb = new StringBuilder();
while(++i<chars.length && chars[i] != ')') {
sb.append(chars[i]);
}
exponents.add(sb.toString());
}
}
}
答案 1 :(得分:0)
如果您需要基于正则表达式的解决方案,请尝试此操作:
String line = "(-2)x^(-2)+(3)x^(1)-(18)x^(-45)";
String pattern = ".*?\\^\\(([\\d-]+)\\)[\\+-]*";
Pattern r = Pattern.compile(pattern,Pattern.MULTILINE);
Matcher m = r.matcher(line);
while (m.find()) {
System.out.println("Found value: " + m.group(1));
}