每N个字符在字符串中添加分隔符?

Abd*_*him 67 c# string grouping string-formatting

我有一个包含二进制数字的字符串.如何在每8个数字后分隔字符串?

假设字符串是:

string x = "111111110000000011111111000000001111111100000000";
Run Code Online (Sandbox Code Playgroud)

我想在每个8个字符之后添加一个像(逗号)这样的分隔符.

输出应该是:

"11111111,00000000,11111111,00000000,11111111,00000000,"
Run Code Online (Sandbox Code Playgroud)

然后我想把它发送到一个列表<> last 8 char 1st然后是前8个字符(除了,)等等.

我怎样才能做到这一点?

Joe*_*oey 112

Regex.Replace(myString, ".{8}", "$0,");
Run Code Online (Sandbox Code Playgroud)

如果你想要一个包含八个字符的字符串数组,那么以下内容可能更容易:

Regex.Split(myString, "(?<=^(.{8})+)");
Run Code Online (Sandbox Code Playgroud)

这将仅在八个字符前面的多个点处分割字符串.

  • 虽然请求**请求尾随逗号,但如果开发人员不想使用尾随逗号,他们可以将RegEx模式更改为".{8}(?!$)",它使用负向前瞻以确保它不会匹配字符串末尾的八个字符. (13认同)
  • 好吧,我希望他们知道他们投入了什么样的数据:) (3认同)
  • 如果你不想要最后一个逗号,你可以使用这个正则表达式 `.{8}(?!$)` 代替。 (2认同)

das*_*ght 38

试试这个:

var s = "111111110000000011111111000000001111111100000000";
var list = Enumerable
    .Range(0, s.Length/8)
    .Select(i => s.Substring(i*8, 8));
var res = string.Join(",", list);
Run Code Online (Sandbox Code Playgroud)

  • 这是一个很棒的解决方案。 (2认同)
  • 顺便说一句,您不需要“ToList()”,因为“string.Join”具有[需要“IEnumerable”的重载](http://msdn.microsoft.com/en-us/library/dd992421 .aspx)(自 .NET 4 起)。 (2认同)
  • 此方法会剪辑字符串的长度。如果“s”字符串包含 7 个以上字符,则不会返回这些字符。 (2认同)