使用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
相关产品推荐
相关产品推荐

