将字符串插入具有特定delimer的数组中
本文关键字:delimer 数组 字符串 插入 | 更新日期: 2023-09-27 18:01:50
想找到一种方法来分割数组中的字符串信息,如下所示。delimer的格式始终为:
string + int + int + int
P000 or P000 + P000 or P000 + P000 + P000
字符串:
P210 Får inte utsättas för värme, heta ytor, gnistor, öppen låga eller andra antändningskällor. Rökning förbjuden. P220 Hålls/förvarad åtskilt från kläder/brännbara material. P273 Undvik utsläpp till miljön. P280 Använd skyddshandskar/ skyddskläder/ ögonskydd/ ansiktsskydd. P333 + P313 Vid hudirritation eller utslag: Sök läkarhjälp. P403 + P235 Förvaras på väl ventilerad plats. Förvaras svalt. P403 + P235 + P236 Förvaras på väl ventilerad plats. Förvaras svalt. I mörker.
期望输出:
P210 Får inte utsättas för värme, heta ytor, gnistor, öppen låga eller andra antändningskällor. Rökning förbjuden.
P220 Hålls/förvarad åtskilt från kläder/brännbara material.
P273 Undvik utsläpp till miljön.
P280 Använd skyddshandskar/ skyddskläder/ ögonskydd/ ansiktsskydd.
P333 + P313 Vid hudirritation eller utslag: Sök läkarhjälp.
P403 + P235 Förvaras på väl ventilerad plats. Förvaras svalt
P403 + P235 + P236 Förvaras på väl ventilerad plats. Förvaras svalt. I mörker.
我建议匹配,而不是拆分(因为您希望包含的delimeters(:
string source = "P210 Får inte utsättas ... Förvaras svalt. I mörker.";
...
string pattern = @"(?<index>P[0-9]{3}( '+ P[0-9]{3}){0,2})(?<text>.+?)(?=(P[0-9]{3})|$)";
string[] lines = Regex.Matches(source, pattern)
.OfType<Match>()
.Select(match => match.Value)
.ToArray();
Regex.Replace(str, @"(?<!'+ )(P'd'd'd)", "'n$1");
这在大多数情况下都有效,除非有可能在具有Pxxx
的组之前找到文本"+ "
;例如CCD_ 3将不会分裂。虽然这可以说不是100%的防故障,但在您的情况下,它可能已经足够了,而且很容易阅读/理解。
它所做的是查找与P[digit][digit][digit]
匹配但不在"+ "
后面的字符串,然后在那里进行拆分。
请注意,您可以将'd'd'd
替换为'd{3}
。
在线测试
Regex解释:
(?<! Do not match anything following this text (this is called a negative lookbehind)
'+ A plus sign and a space
)
(P'd'd'd) A P and 3 digits, parentheses allow us to "save" this group for later
'n$1 Replace with a newline character and the first group within parentheses (not that the "do not match" part is not included in this)
您可以通过迭代字符串中的每个字符来实现这一点。您可以使用Char.IsDigit和Char.IsChar方法来确定字符是int还是string。