这里是有问题的字符串的一个例子:
[952,M] [782,M] [782] {2[373,M]} [1470] [352] [235] [234] {3[610]}{3[380]} [128] [127]
我已经添加了空格,但它确实无助于分割。我想要做的是将方括号中的每个“字段”添加到字符串列表中。我可以处理的下一个问题是一些字段也有一个逗号分隔的部分,我可以在事后拆分。真正的问题在于大括号。例如{2[373,M]}
方括号外的数字是方括号的重复。
在我的一生中,我想不出一种方法可以始终如一地将行拆分为字符串列表。
准代码如下:
for(i = 0 to string.length)
{
if string.substring(i,1) = "]"
int start1 = i
elseif string.substring(i,1)="["
int start1 = i
elseif string.substring(i,1) = "{"
int start2 = i
elseif string.substring(i,1) = "}"
int end2 = i
}
我考虑过使用上面的代码思路来对每个“字段”进行子字符串化,但大括号也包含方括号。任何想法将不胜感激。
最佳答案
var s = "[952,M] [782,M] [782] {2[373,M]} [1470] [352] [235] [234] {3[610]}{3[380]} [128] [127]";
var s2 = Regex.Replace(s, @"\{(\d+)(\[[^]]+\])\}", m => string.Concat(
Enumerable.Repeat(m.Groups[2].Value, int.Parse(m.Groups[1].Value))));
var a = s2.Split("[] ".ToArray(), StringSplitOptions.RemoveEmptyEntries);
// s2 = "[952,M] [782,M] [782] [373,M][373,M] [1470] [352] [235] [234] [610][610][610][380][380][380] [128] [127]"
// a = {"952,M","782,M","782","373,M","373,M","1470","352","235","234","610","610","610","380","380","380","128","127"}
关于C# String 处理非定界字符串列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39605032/