C#中如何实现字符串从右往左每3个字符添加空格分隔
C# 从字符串右端开始每3位插入空格实现方案
需求说明:对输入字符串做分隔处理,从最右端向左计数,每3个字符插入一个空格,示例效果:11222333 处理后输出 11 222 333。
实现方法1:纯字符串处理(通用方案,适配任意字符串)
这个方案不限制输入内容是数字,只要是字符串都能正确处理,不会出现类型转换错误:
using System.Text; public static string SplitBy3FromRight(string input) { // 空字符串或者长度不足3位直接返回原值 if (string.IsNullOrWhiteSpace(input) || input.Length <= 3) { return input; } StringBuilder sb = new StringBuilder(); // 计算最左侧第一个分段的长度 int firstLen = input.Length % 3; if (firstLen == 0) { firstLen = 3; } // 先拼接第一个分段 sb.Append(input[..firstLen]); // 后续每3个字符为一段,前面补空格 for (int i = firstLen; i < input.Length; i += 3) { sb.Append(' '); sb.Append(input.Substring(i, 3)); } return sb.ToString(); }
调用测试:
string res = SplitBy3FromRight("11222333"); // res值为 "11 222 333",符合预期
实现方法2:数字格式化(仅适用于纯数字字符串)
如果输入是纯数字内容,可以直接用内置的千分位格式化能力实现,代码更简洁:
string input = "11222333"; long numVal = long.Parse(input); string res = numVal.ToString("#,##0").Replace(',', ' '); // res值为 "11 222 333"
注意:如果输入包含非数字字符、或者数字长度超过long类型可表示的范围,不要使用这个方法,会触发转换异常。
内容的提问来源于stack exchange,提问作者Chakir Mohamed
相关产品推荐
相关产品推荐

