我想使用多个字符来拆分字符串以进行拆分。例如,考虑旋转文本格式:
This is a {long|ugly|example} string
我想解析这个字符串并将其拆分为“{”、“|”和“}”字符
myString.Split('|','{','}')
现在我有了可以使用的令牌,但我想要保留有关使用哪个 char 来拆分返回的数组的每一部分的信息。
任何现有的代码可以做这样的事情吗?
我倾向于对此使用正则表达式。然后您可以使用匹配组来跟踪匹配的内容。
看看这个正则表达式测试器。使用您的测试数据和这个正则表达式模式:
([^{|}]+)([{|}]?)
这有效地将字符串拆分为 5 个匹配项。每个匹配包含 2 个组:拆分字符串和拆分的字符。
运行它的代码是这样的:
MatchCollection m = Regex.Matches("This is a {long|ugly|example} string ",@"([^{|}]+)([{|}]?)");
现在匹配集合 m 将为每个匹配的字符串包含一个 Match 对象,该对象又将包含 2 个组,即字符串和被分割的字符。
m[0].Groups[0].Value; // 1st split string
m[0].Groups[1].Value; // 1st split character