Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在上一个索引之后返回下一个索引?_Java_String_Indexof - Fatal编程技术网

Java 如何在上一个索引之后返回下一个索引?

Java 如何在上一个索引之后返回下一个索引?,java,string,indexof,Java,String,Indexof,例如: str = "(a+b)*(c+d)*(e+f)" str.indexOf("(") = 0 str.lastIndexOf("(") = 12 如何获得第二个括号中的索引? (c+d) 看一看试试这个: String word = "(a+b)*(c+d)*(e+f)"; String c = "("; for (int index = word.indexOf(c);index >= 0; index = word.indexOf(c, index + 1)) {

例如:

str = "(a+b)*(c+d)*(e+f)"
str.indexOf("(") = 0
str.lastIndexOf("(") = 12
如何获得第二个括号中的索引? (c+d)
看一看

试试这个:

 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  "("
    }
  • 反复使用
    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;
            }
        }
    }
int索引=0;
int resultIndex=0;
对于(int i=0;i
您可以从Apache Commons中使用,在本例中是

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

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

我认为有更好的方法

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


@巴拉克:
索引>=0是for循环中的条件,所以很抱歉我再次回滚到我的答案:(7年后仍然有用:)。
String str = "(a+b)*(c+d)*(e+f)";
str = str.replace(str.substring(str.lastIndexOf("*")), "");
int idx = str.lastIndexOf("(");
   str = str.substring(idx);