'How to split string after every n-th character?
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!
Solution 1:[1]
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);
If you're stuck with the "classic" .NET Framework, here are chunk implementations for .NET < 6:
Solution 2:[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.
Solution 3:[3]
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
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | |
| Solution 2 | |
| Solution 3 | The fourth bird |
