【问题标题】:Java parentheses index matchingJava括号索引匹配
【发布时间】:2013-02-11 06:59:21
【问题描述】:

我正在编写代码来发现字符串的最内左索引(我正在做字符串解析)

下面的代码看起来正确吗?

 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

【问题讨论】:

  • 如果输入的是"a(b(c)) d(e(f))"怎么办?
  • 它在“c”之前返回“(”
  • 不,我的意思是应该是什么?
  • 我不打算处理这种情况下的字符串。即只允许一个嵌套循环

标签: java string-matching parentheses


【解决方案1】:

是的,但是您可以使用下面的而不是 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);
  }

【讨论】:

  • @user1022944 是的,它会的。我已经更正了编译错误。
猜你喜欢
  • 2015-07-11
  • 1970-01-01
  • 2020-06-05
  • 1970-01-01
  • 2014-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多