C#:字符串的最后一个括号()内的字符串

Jey*_*ari 0 c# regex string brackets indexof

在我的一项任务中,我必须在 Bug 状态的最后一组括号内找到 Bug 的 ID。我列出了一些示例错误状态。

错误状态(字符串)看起来像,

Case 1: Bug A is resolved (XID: X015)
Case 2: Bug B is resolved (ZID: X016)
Case 3: Bug C is resolved (Data issue) (SID: X017)
Run Code Online (Sandbox Code Playgroud)

对于案例 #1 和 #2 ,我进行了编码,找到 ( 和 ) 的第一次出现,并计算括号内的值。

var start = value.IndexOf("(", StringComparison.Ordinal) + 1;
var end = value.IndexOf(")", start, StringComparison.Ordinal);
var BugID = value.Substring(start, end - start);
Run Code Online (Sandbox Code Playgroud)

但是在案例#3 中,有两组括号,第一组包含关于错误的摘要,第二组是实际的错误 ID,我需要提取错误 ID。我必须编写这样的代码,

var start = value.IndexOf(last "(");    //index of last (
var end = value.IndexOf(last ")");  //index of last )
var BugID = value.Substring(start, end - start);
Run Code Online (Sandbox Code Playgroud)

任何建议都会有所帮助!

Dmi*_*nko 5

像这样的东西:

  String source = "Some (123) test (valid value) with ugly -> ( <- tricks";
  String result = null; // what if source doesn´t have brackets?

  int pClose = source.LastIndexOf(')');

  if (pClose >= 0) {
    int pOpen = source.LastIndexOf('(', pClose);

    if (pOpen >= 0)
      result = source.Substring(pOpen + 1, pClose - pOpen - 1);
  }

  ...
  // "valid value"
  Console.Write(result);
Run Code Online (Sandbox Code Playgroud)