我需要从字符串中提取票证号码。字符串示例:
string body = "Hello, world welcome. [TKNM-1234] Blah blah [HelpCode-5] Blah blah";
我只需要从该字符串中提取1234
。做这个的最好方式是什么。我以前曾尝试过:
int from = body.IndexOf("[TKNM-") + "[TKNM-".Length;
int to = body.LastIndexOf("]");
ticketNumber = body.Substring(from, to - from);
但是由于TKNM之后的其他括号,这存在问题。一切都在C#中。
答案 0 :(得分:5)
答案 1 :(得分:0)
这是一个Linq解决方案,它也可以检测到多次出现的情况,如果您不希望它丢弃其余部分并优先使用,或者如果票证前缀是动态的,则可以使其成为通用函数,并将其添加为函数的输入:
var body = "Hello, world welcome. [TKNM-1234] Blah blah [HelpCode-5] Blah blah";
var ticketnumbers = body.Split()
.Where(x => x.StartsWith("[TKNM") && x.EndsWith("]"))
.Select(x=>x.Replace("[", string.Empty).Replace("]", string.Empty).Split('-')[1]).ToList();
Console.WriteLine(string.Join(", ", ticketnumbers));