7

例如:

str = "(a+b)*(c+d)*(e+f)"
str.indexOf("(") = 0
str.lastIndexOf("(") = 12

如何获得第二个括号中的索引?(c+d) <- 这个

4

5 回答 5

13
int first  = str.indexOf("(");
int next = str.indexOf("(", first+1);

看看API 文档

于 2013-04-24T11:28:15.870 回答
11

试试这个 :

 String word = "(a+b)*(c+d)*(e+f)";
 String c = "(";
  for (int index = word.indexOf(c);index >= 0; index = word.indexOf(c, index + 1)) {
       System.out.println(index);//////here you will get all the index of  "("
    }
于 2013-04-24T11:28:22.027 回答
0
  • charAt()反复使用
  • indexOf()反复使用

试试这个简单的通用解决方案:

    int index =0;
    int resultIndex=0;
    for (int i = 0; i < str.length(); i++){
        if (str.charAt(i) =='('){
            index++;
            if (index==2){
            resultIndex =i;
            break;
            }
        }
    }
于 2013-04-24T11:28:57.600 回答
0

您可以使用来自 Apache Commons 的StringUtils,在这种情况下,它将是

StringUtils.indexof(str, ")", str.indexOf(")") + 1);

想法是在最后一个参数中可以指定起始位置,这样就可以避免第一个“)”。

于 2013-04-24T11:31:01.973 回答
0

我认为有更好的方法!

String str = "(a+b)*(c+d)*(e+f)";
str = str.replace(str.substring(str.lastIndexOf("*")), "");
int idx = str.lastIndexOf("(");

和 "(c+d)" :

   str = str.substring(idx);
于 2013-04-24T11:38:58.060 回答