You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用更简洁代码提取连字符分隔字符串中的指定子串?

提取字符串中特定片段的简洁实现

嘿,这有几个更简洁的写法可以帮你从"ABD-DDD-RED-Large"里提取出"DDD-RED",比你当前的方式更紧凑:

方法1:使用范围运算符简化Split操作

如果你用的是C# 8.0及以上版本,可以直接利用范围运算符截取Split后的子数组,一步到位:

var value = string.Join("-", "ABD-DDD-RED-Large".Split('-')[1..3]);

这里的[1..3]会取Split数组中索引为1和2的元素(范围的结束索引是排他的),正好对应"DDD"和"RED",直接用string.Join拼接就得到目标字符串啦。

方法2:用Substring直接截取(无需拆分整个数组)

如果不想拆分整个字符串,也可以通过定位分隔符的位置来直接截取:

var originalStr = "ABD-DDD-RED-Large";
var startPos = originalStr.IndexOf('-') + 1; // 跳过第一个'-'
var endPos = originalStr.LastIndexOf('-'); // 找到最后一个'-'的位置
var value = originalStr.Substring(startPos, endPos - startPos);

这种方法避免了拆分整个字符串生成数组,在处理超长字符串时性能会更优一点。

方法3:正则表达式(适合灵活匹配场景)

如果你的字符串格式可能有变化,正则表达式会更灵活:

var match = System.Text.RegularExpressions.Regex.Match("ABD-DDD-RED-Large", @"-(\w+-\w+)-");
var value = match.Success ? match.Groups[1].Value : string.Empty;

正则表达式-(\w+-\w+)-会匹配被-包裹的两段字母数字组合,捕获组1就是我们要的"DDD-RED",记得判断匹配是否成功避免空引用哦。

内容的提问来源于stack exchange,提问作者Peter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 10:12:45