2013-02-25 63 views
0

我写的代码,发现一个字符串的内最左边的指数(我在做字符串解析)Java的括号折射率匹配

是否将下面的代码看起来是正确的?

String t = "VREF_DAC_BAND_GAP_(VALUE|DELTA|TRIM|K(7-0|15-9))" 
int lb_ind = t.indexOf('(', 0);  // left bracket index 
int rb_ind = t.indexOf(')', lb_ind); //right bracket index 


while((t.indexOf("(", lb_ind+1) != -1) && (t.indexOf("(", lb_ind+1) < rb_ind)) 
     { 
      lb_ind = t.indexOf('(', lb_ind+1); 
     } 



// lb_ind should now contain the position of the inner left most parenthesis 
+3

如果输入是“a(b(c))d(e(f))”'? – 2013-02-25 23:47:32

+0

它返回“(”之前的“c” – 2013-02-26 00:01:52

+0

不,我的意思是什么_should_它是? – 2013-02-26 00:12:00

回答

0

是的,但您可以使用下面的代替while循环。

lastIndexOf(String str,int fromIndex)
返回该字符串中指定子字符串的最后一次出现处的索引,从指定索引开始向后搜索。

String t = "VREF_DAC_BAND_GAP_(VALUE|DELTA|TRIM|K(7-0|15-9))" 
int lb_ind = t.indexOf('(', 0);  // left bracket index 
int rb_ind = t.indexOf(')', lb_ind); //right bracket index 

if(t.lastIndexOf("(", rb_ind) != -1) 
    { 
     lb_ind = t.lastIndexOf("(", rb_ind); 
    } 
+0

这不会正确输出“ “ – 2013-02-26 00:54:36

+0

@ user1022944是的,我已经纠正了编译错误。 – 2013-03-07 06:04:54