2

I have a string and I want to split the string after every 2nd comma. Is this doable using split string in c#?

Example string:

"This,is,an, example,for,the,stackoverflow,community"

Desired output

This,is
an,example
for,the
stackoverflow,community

Any help would be much appreciated thanks!

Stefan
  • 17,448
  • 11
  • 60
  • 79

3 Answers3

5

Using Enumerable.Chunk from .NET 6, you can

  • split on ",",
  • create chunks of two items each and
  • re-join those chunks:
string input = "This,is,an,example,for,the,stackoverflow,community";

var output = input.Split(",")
    .Chunk(2)
    .Select(chunk => string.Join(",", chunk));

foreach (string s in output)
    Console.WriteLine(s);

fiddle

If you're stuck with the "classic" .NET Framework, here are chunk implementations for .NET < 6:

Heinzi
  • 167,459
  • 57
  • 363
  • 519
2

You could do something like this:

var s = "This,is,an, example,for, the, stackoverflow, community";

var a = ("," + s + ",").Split(',');

//  requires using System.Linq;
var b = Enumerable.Range(0, a.Length / 2)
        .Select(i => $"{a[2 * i]}, {a[2 * i + 1]}".Trim(',', ' '));

Range enumerates the resulting array and computes concatenations of the corresponding pairs of strings.

Axel Kemper
  • 10,544
  • 2
  • 31
  • 54
0

You could also use a pattern to match 1 or more characters except for a comma using a negated character class [^,]+ before and after the comma:

string pattern = @"[^,]+,[^,]+";
string input = "This,is,an, example,for,the,stackoverflow,community";
foreach (Match m in Regex.Matches(input, pattern))
{
    Console.WriteLine(m.Value);
}

Output

This,is
an, example
for,the
stackoverflow,community
The fourth bird
  • 154,723
  • 16
  • 55
  • 70