在.NET Framework C#中如何去除文本框输入内容中的多余逗号
C# 多数值输入分割转换容错方案
异常原因
你当前的代码抛出异常是因为str.Split(',')遇到连续逗号时,会生成空字符串的数组元素,int.Parse无法处理空字符串,就会触发格式异常。不需要修改原字符串(适配string不可变的特性),直接调整分割逻辑即可解决问题。
解决方案
方案1:快速修复(仅需处理多余逗号、输入全为合法数字的场景)
直接给Split方法传入StringSplitOptions.RemoveEmptyEntries参数,自动过滤分割后产生的所有空字符串,连续逗号、首尾逗号产生的空项都会被直接移除:
array = Array.ConvertAll(str.Split(',', StringSplitOptions.RemoveEmptyEntries), int.Parse);
注:
int.Parse本身支持解析带前后空格的数字字符串,用户输入类似"1 , 2 "的内容也可以正常转换。
方案2:全场景容错处理(兼容非法输入、多余空格、非数字内容)
如果需要避免用户输入非数字内容时直接抛出异常,建议结合LINQ和int.TryParse做多层过滤,兼容性更强:
array = str.Split(',', StringSplitOptions.RemoveEmptyEntries) .Select(s => int.TryParse(s.Trim(), out int num) ? num : (int?)null) .Where(n => n.HasValue) .Select(n => n.Value) .ToArray();
这个方案的优势:
- 自动过滤连续逗号产生的空项
- 自动清理每个数值前后的多余空格
- 自动跳过所有无法转换为整数的非法输入,不会抛出异常
内容的提问来源于stack exchange,提问作者nowakweronika
相关产品推荐
相关产品推荐

