RegEx分割字符串至List<string>遇问题,求助排查错误
解决字符串分割为Layer列表的问题
我懂这种盯着正则表达式半天搞不定的崩溃感——3.5小时确实够折磨人的!咱们来一步步搞定你的需求:把字符串" Layer 1 Layer 2 Layer 3 Layer 4 "分割成包含每个Layer X的List<string>,对吧?
最可靠的解决方案:正则匹配而非分割
其实不用纠结分割,直接用正则匹配所有符合Layer 数字格式的子串反而更简单,而且能自动忽略前后的空格和中间的分隔空格。以C#为例(你提到List<string>,应该是用C#),代码如下:
string input = " Layer 1 Layer 2 Layer 3 Layer 4 "; var layerList = Regex.Matches(input, @"Layer \d+") .Cast<Match>() .Select(match => match.Value) .ToList();
这段代码会直接输出:["Layer 1", "Layer 2", "Layer 3", "Layer 4"],完全符合你的需求。
你可能踩过的坑
我猜你之前的失败大概率是这几个原因:
- 错误1:直接按空格分割:用
Split(' ')或者Split(new[] {" "}, StringSplitOptions.RemoveEmptyEntries)会把Layer和数字拆成单独的元素,得到["Layer", "1", "Layer", "2"...],不是你要的结果。 - 错误2:正则分割的模式不对:比如用
Split(@"\s+"),虽然能去掉空字符串,但还是会把Layer和数字分开,本质和上面的问题一样。 - 错误3:正则匹配时用了错误的模式:比如不小心加了字符串锚点
^或$,导致只能匹配整个字符串,而不是每个独立的Layer X子串;或者没考虑Layer和数字之间的空格,写了Layer\d+这种错误的模式。
如果之前你有试过具体的代码,也可以贴出来,咱们再针对性分析哪里出了问题~
内容的提问来源于stack exchange,提问作者7VNT
相关产品推荐
相关产品推荐

