我有一个字符串进来
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被"("+")"包围
如果你使用正则表达式,以下正则表达式应该做你想要的:
@" *(?<name>.*) \((?<id>.*)\)"
Run Code Online (Sandbox Code Playgroud)
该Name被存储捕获组中name并WorkerId存储在捕获组id.
这假设工作者ID位于最后一对括号中.
即使名称由于某种原因(例如John (The Third) (JK4532R))包含括号,解决方案也应该有效.但是,如果输入中缺少工作者ID,并且名称末尾带有括号,则无法区分名称和工作者ID(例如John (The Third))
正如你在帖子中提到的,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)