我需要将一个数字拆分成偶数部分,例如:
32427237需要成为324 272 37
103092501需要成为103 092 501
我相信我可以接下来的数字,但我确信有一种更有效的方式,因为我不想错过这些数字中的字符 - 数字本身可以是任意长度所以如果数字是1234567890我希望它分成这些部分123 456 789 0
我已经看过其他语言的例子,比如Python等,但我不太了解它们将它们转换为C# - 循环通过字符然后在第三个获取前一个然后该索引来获取字符串的部分可能做好这份工作,但我愿意接受如何更好地完成这项工作的建议 .
13 回答
如果您必须在代码中的许多地方执行此操作,您可以创建一个花哨的扩展方法:
然后你可以像这样使用它:
根据需要输出为
324 272 37
.你可以使用一个简单的for循环在每个第n个位置插入空格:
LINQ规则:
UPDATED:
一种非常简单的方法(不是最有效的,但不是最有效的数量级) .
继承人
分裂方法:
要以字符串形式连接,以空格分隔:
编辑:我更喜欢Martin Liversage解决方案:)
编辑2:修正了一个错误 .
编辑3:添加了加入字符串的代码 .
这已经晚了半年但是:
我会做这样的事情,虽然我确定还有其他方法 . 应该表现得很好 .
我喜欢这个因为它很酷,虽然效率不高:
试试这个:
如果您知道整个字符串的长度可以被部件大小完全整除,那么使用:
但是如果整个字符串有可能在最后有一个小块,你需要更复杂一点:
在这些示例中,部件将是IEnumerable,但您可以在末尾添加.ToArray()或.ToList(),以防您需要string []或List <string>值 .
使用其他StackOverflow问题的答案的一个很好的实现:
AsChunks():https://stackoverflow.com/a/22452051/538763
ToCsv():https://stackoverflow.com/a/45891332/538763
这可能是偏离主题的,因为我不知道你为什么希望以这种方式格式化数字,所以如果它不相关,请忽略这篇文章...
整数的显示方式因不同文化而异 . 您应该以本地独立方式执行此操作,以便稍后本地化您的更改 .
int.ToString采用不同的参数,可用于格式化不同的文化 . "N"参数为您提供了特定于文化的分组的标准格式 .
steve x string formatting也是一个很好的资源 .
对于分割字符串并返回每个地方具有特定字符数的字符串列表,这是我的功能: