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

C#按下划线分割字符串:截取指定前缀内容的问题求助

解决方案

你的代码问题在于,当用Split('_')分割字符串后,取countUnderScore-1索引的元素,实际上是拿到了分割后的倒数第二个部分(比如duplicate_config_dev_V2分割后是4个元素,索引2对应的是dev),所以才会得到不符合预期的结果。

要实现保留duplicate_config_dev的需求,有两种简单可靠的方法:

方法一:截取最后一个下划线之前的子串

直接找到字符串中最后一个下划线的位置,截取该位置之前的内容:

int lastUnderlinePos = input.LastIndexOf('_');
if (lastUnderlinePos != -1)
{
    input = input.Substring(0, lastUnderlinePos);
}

这个方法效率较高,不需要分割整个字符串,适合处理较长的文本。

方法二:分割后拼接前n-1个部分

如果需要更灵活的处理(比如后续版本格式变化),可以先分割字符串,再排除最后一个部分后重新拼接:

string[] segments = input.Split('_');
if (segments.Length > 1)
{
    input = string.Join("_", segments.Take(segments.Length - 1));
}

这种方式可读性更强,也方便调整需要保留的部分数量。

两种方法都能将duplicate_config_dev_V2和duplicate_config_dev_V3正确转换为duplicate_config_dev。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 10:33:19