如何从较长的字符串中解析出这个字符串?

leo*_*ora 0 c# regex string

我有一个字符串进来

 FirstName LastLast (WorkerId)
Run Code Online (Sandbox Code Playgroud)

例如:

"Joe Thompson (234DerX)"
Run Code Online (Sandbox Code Playgroud)

我想把它解析成这个人物

 class Person
 {
      public string Name;  //Joe Thompson
      public string WorkerId;  //234DerX
 }
Run Code Online (Sandbox Code Playgroud)

解析worker Id和Name的最佳方法是什么.正则表达式?更简单的事情.有些名称有middles名称或多个名字所以我唯一可以依赖的是worker ID被"("+")"包围

nha*_*tdh 7

如果你使用正则表达式,以下正则表达式应该做你想要的:

@" *(?<name>.*) \((?<id>.*)\)"
Run Code Online (Sandbox Code Playgroud)

Name被存储捕获组中nameWorkerId存储在捕获组id.

这假设工作者ID位于最后一对括号中.

即使名称由于某种原因(例如John (The Third) (JK4532R))包含括号,解决方案也应该有效.但是,如果输入中缺少工作者ID,并且名称末尾带有括号,则无法区分名称和工作者ID(例如John (The Third))


Ham*_*yan 5

正如你在帖子中提到的,only thing i can rely on is that the worker id is surrounded by "(" + ")"我会建议这个解决方案:

 class Person
 {
      public Person(string str)
      {
          int pos = str.LastIndexOf('(');
          Name = str.Substring(0, pos - 1);
          WorkerId = str.Substring(pos + 1).TrimEnd(')');
      }

      public string Name;
      public string WorkerId;
 }
Run Code Online (Sandbox Code Playgroud)