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

使用C#移除逗号分隔字符串尾部连续零值的实现方法

C# 移除逗号分隔字符串尾部连续零实现方案

核心实现思路

  • 先将原始字符串按逗号分割为独立的分段数组,处理分段前后的空格避免匹配误差
  • 从数组末尾向前遍历,跳过所有值为0的分段,直到遇到第一个非零分段即停止
  • 截取从开头到该非零分段的所有内容,按原格式用, 重新拼接
  • 额外兼容全零输入、单值输入等边界场景,避免返回空值异常

基础实现代码(无额外依赖,性能最优)

public static string RemoveTrailingZeros(string input)
{
    if (string.IsNullOrWhiteSpace(input))
        return string.Empty;
    
    string[] segments = input.Split(',');
    int lastValidIndex = segments.Length - 1;
    
    // 从后往前定位最后一个非零值的位置
    while (lastValidIndex >= 0)
    {
        if (segments[lastValidIndex].Trim() != "0")
            break;
        lastValidIndex--;
    }
    
    // 全零场景兜底返回单个0
    if (lastValidIndex < 0)
        return "0";
    
    return string.Join(", ", segments[0..(lastValidIndex + 1)]);
}

简洁LINQ实现(适合短字符串场景)

using System.Linq;

public static string RemoveTrailingZerosLinq(string input)
{
    if (string.IsNullOrWhiteSpace(input))
        return string.Empty;
    
    var validSegments = input.Split(',')
        .Reverse()
        .SkipWhile(seg => seg.Trim() == "0")
        .Reverse();
    
    return validSegments.Any() ? string.Join(", ", validSegments) : "0";
}

测试用例验证

  • 输入:"110, 0, 170, 0, 0" → 输出:"110, 0, 170",匹配需求预期
  • 输入:"0, 0, 20, 0, 30, 0, 0" → 输出:"0, 0, 20, 0, 30",中间位置零值完全保留
  • 输入:"0, 0, 0" → 输出:"0",全零场景无空值问题
  • 输入:"90" → 输出:"90",单值无逗号场景兼容
  • 输入:"40, 0" → 输出:"40",尾部单个零正常剔除

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 20:33:19