我需要将一个数字分成均等的部分,例如:
32427237 需要变成 324 272 37
103092501 需要变成 103 092 501
如何分割它并处理奇数情况,如分割成这些部分,例如: 123 456 789 0?
我需要将一个数字分成均等的部分,例如:
32427237 需要变成 324 272 37
103092501 需要变成 103 092 501
如何分割它并处理奇数情况,如分割成这些部分,例如: 123 456 789 0?
我浏览了所有评论,决定编写这个扩展方法:
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
这是一个使用其他StackOverflow问题的答案实现的好方法:
"32427237"
.AsChunks(3)
.Select(vc => new String(vc))
.ToCsv(" "); // "324 272 37"
"103092501"
.AsChunks(3)
.Select(vc => new String(vc))
.ToCsv(" "); // "103 092 501"
AsChunks(): https://dev59.com/z3A75IYBdhLWcg3wlqOh#22452051(将数据分块)
ToCsv(): https://dev59.com/J3I-5IYBdhLWcg3wYXL8#45891332(转换为CSV格式)
针对将字符串拆分并返回每个位置特定字符数量的字符串列表,这是我的函数:
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;
}
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()
yourString.ToString("#,#").Replace(',', ' ');
如果您不知道为什么要以这种方式格式化数字,那么这可能与主题无关,请忽略此帖子...
整数的显示方式因不同文化而异。您应该以本地独立的方式进行操作,以便在以后更容易地进行本地化更改。
int.ToString采用不同的参数,可用于针对不同文化进行格式化。 "N"参数为您提供了特定于文化的标准格式。
steve x string formatting也是一个很好的资源。