2013-02-25 50 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