我有一个这样的字符串结构:
BLOCK
LIST1 Lorem ipsum dolor sit amet.
LIST1 Lorem ipsum dolor sit amet.
LIST1 Lorem ipsum dolor sit amet.
LIST2 Lorem ipsum dolor sit amet.
LIST2 Lorem ipsum dolor sit amet.
LIST1 Lorem ipsum dolor sit amet.
BLOCK
LIST1 Lorem ipsum dolor sit amet.
LIST2 Lorem ipsum dolor sit amet.
LIST3 Lorem ipsum dolor sit amet.
LIST2 Lorem ipsum dolor sit amet.
LIST1 Lorem ipsum dolor sit amet.
LIST1 Lorem ipsum dolor sit amet.
LIST1 Lorem ipsum dolor sit amet.
…
我想让它变成这样:
1. Lorem ipsum dolor sit amet.
1. Lorem ipsum dolor sit amet.
2. Lorem ipsum dolor sit amet.
3. Lorem ipsum dolor sit amet.
1. Lorem ipsum dolor sit amet.
2. Lorem ipsum dolor sit amet.
4. Lorem ipsum dolor sit amet.
2. Lorem ipsum dolor sit amet.
1. Lorem ipsum dolor sit amet.
1. Lorem ipsum dolor sit amet.
1. Lorem ipsum dolor sit amet.
2. Lorem ipsum dolor sit amet.
2. Lorem ipsum dolor sit amet.
3. Lorem ipsum dolor sit amet.
4. Lorem ipsum dolor sit amet.
var input = "BLOCKrn LIST1 Lorem ipsum dolor sit amet ...";
var levels = new List<string> { "BLOCK", "LIST1", "LIST2", "LIST3" };
var counter = levels.ToDictionary(level => level, level => 0);
// Replace each key word with incremented counter,
// while resetting deeper levels to 0.
var result = Regex.Replace(input, string.Join("|", levels), m =>
{
for (int i = levels.IndexOf(m.Value) + 1; i < levels.Count; i++)
{
counter[levels[i]] = 0;
}
return (++counter[m.Value]).ToString() + ".";
});
结果:<>之前1.1. 我爱你,我爱你。2. 我爱你,我爱你。3.我爱你,我爱你。1. 我爱你,我爱你。2. 我爱你,我爱你。4. 我爱你,我爱你。2.1. 我爱你,我爱你。1. 我爱你,我爱你。1. 我爱你,我爱你。2. 我爱你,我爱你。2. 我爱你,我爱你。3.我爱你,我爱你。4. 我爱你,我爱你。