将一个字符串/数字按每N个字符/数字拆分?

77

我需要将一个数字分成均等的部分,例如:

32427237 需要变成 324 272 37
103092501 需要变成 103 092 501

如何分割它并处理奇数情况,如分割成这些部分,例如: 123 456 789 0?


1
你想把字符串分成三个独立的字符串,还是想要插入空格? - Dirk Vollmar
2
将字符串拆分为等长的子字符串 (Java)所有答案都是用Java编写的,但你可以很容易地将其移植到C#中。 - Emil
它们将是三个独立的字符串。 - RoguePlanetoid
17个回答

1

我浏览了所有评论,决定编写这个扩展方法:

public static string FormatStringToSplitSequence(this string input, int splitIndex, string splitCharacter)
    {
        if (input == null)
            return string.Empty;

        if (splitIndex <= 0)
            return string.Empty;

        return string.Join(string.Empty, input.Select((x, i) => i > 0 && i % splitIndex == 0 ? string.Format(splitCharacter + "{0}", x) : x.ToString()));
    }

例子:

var text = "24455";
var result = text.FormatStringToSplitSequence(2, ".");

输出: 24.45.5


1

0

针对将字符串拆分并返回每个位置特定字符数量的字符串列表,这是我的函数:

public List<string> SplitStringEveryNth(string input, int chunkSize)
    {
        var output = new List<string>();
        var flag = chunkSize;
        var tempString = string.Empty;
        var lenght = input.Length;
        for (var i = 0; i < lenght; i++)
        {
            if (Int32.Equals(flag, 0))
            {
                output.Add(tempString);
                tempString = string.Empty;
                flag = chunkSize;
            }
            else
            {
                tempString += input[i];
                flag--;
            }

            if ((input.Length - 1) == i && flag != 0)
            {
                tempString += input[i];
                output.Add(tempString);
            }
        }
        return output;
    }

0
你可以尝试使用 Linq 来实现类似这样的功能。
var str = "11223344";
var bucket = 2;    
var count = (int)Math.Ceiling((double)str.Length / bucket);
        
Enumerable.Range(0, count)
    .Select(_ => (_ * bucket))
    .Select(_ => str.Substring(_,  Math.Min(bucket, str.Length - _)))
    .ToList()

0
最简单的将千位数用空格分隔的方式,看起来不太好,但是很完美,即:

yourString.ToString("#,#").Replace(',', ' ');

0

如果您不知道为什么要以这种方式格式化数字,那么这可能与主题无关,请忽略此帖子...

整数的显示方式因不同文化而异。您应该以本地独立的方式进行操作,以便在以后更容易地进行本地化更改。

int.ToString采用不同的参数,可用于针对不同文化进行格式化。 "N"参数为您提供了特定于文化的标准格式。

steve x string formatting也是一个很好的资源。


它们只是数字,我没有遵循任何一种正常的数字格式,这就是为什么我提到了字符串/数字,因为我将使用它们进行需要特定格式的操作。 - RoguePlanetoid

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接