splitting a string based on multiple char delimiters

C#.NetStringSplit

C# Problem Overview


I have a string "4,6,8\n9,4"

I want to split this based on ,and \n

Output array should be

4
6
8
9
4

Edit :

Now i am reading string from console , when i enter a string as above in console , in the code behind i get as "4,6,8\\n9,4" . Now that i want to split using "," and "\\n" . How can i change the expression ?

C# Solutions


Solution 1 - C#

Use string.Split(char [])

string strings = "4,6,8\n9,4";
string [] split = strings .Split(new Char [] {',' , '\n' });

EDIT

Try following if you get any unnecessary empty items. String.Split Method (String[], StringSplitOptions)

string [] split = strings .Split(new Char [] {',' , '\n' }, 
                                 StringSplitOptions.RemoveEmptyEntries);

EDIT2

This works for your updated question. Add all the necessary split characters to the char [].

string [] split = strings.Split(new Char[] { ',', '\\', '\n' },
                                 StringSplitOptions.RemoveEmptyEntries);

Solution 2 - C#

Another option is to use Regex.Split. This is useful when the split sequences are more complex. For instance if spaces can also be part of the split delimiters such as:

"4,6,8 , 9\\n\\n4"

Then:

using System.Text.RegularExpressions;
var i = "4,6,8 , 9\n\n4";
var o = Regex.Split(i, @"[,\s\n]+");
// now o is:
// new string[] { "4", "6", "8", "9" }

Note that the regular expression used is "more accepting" - it ignored the empty "space" between the \n's and it would accept "4 6 8 9 4" just the same - so the above to to show a point: there is more than one way to skin a cat.

Happy coding.

Solution 3 - C#

var s = "4,6,8\n9,4";
var split = s.Split(new char[]{',', '\n'});

But this has to be a dupe...

EDIT: Addressing the comment.

This code:

static void Main(string[] args)
{
    var s = "4,6,8\n9,4";

    foreach (var a in s.Split(new char[] { ',', '\n' }))
        System.Diagnostics.Debug.WriteLine(a);
}

Outputs this:

4
6
8
9
4

EDIT: Reading input from the console is different. \n is different when entered manually.

static void Main(string[] args)
{
    var s = "4,6,8\\n9,4";

    foreach (var a in s.Split(new string[] { ",", "\\n" }, StringSplitOptions.RemoveEmptyEntries))
        System.Diagnostics.Debug.WriteLine(a);
}

Solution 4 - C#

string tosplit = "4,6,8\n9,4";
var split = tosplit.Split(new Char [] {',', '\n' });

Just in case you are not printing / seeing it properly:

split.ToList().ForEach(Console.WriteLine);

Solution 5 - C#

Can you do a string.Replace('\n',',') followed by the string.split(',') ?

Solution 6 - C#

// input string
string input = "email@domain.com;email2@domain.com,email3@domain.com;";

// each character in this string will split it
string splitBy = ",;";

// do the split, remove any blank results
string[] result = input.Split(splitBy.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);

output is an array of strings:

email@domain.com
email2@domain.com
email3@domain.com

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionKuntady NitheshView Question on Stackoverflow
Solution 1 - C#CharithJView Answer on Stackoverflow
Solution 2 - C#user166390View Answer on Stackoverflow
Solution 3 - C#Austin SalonenView Answer on Stackoverflow
Solution 4 - C#manojldsView Answer on Stackoverflow
Solution 5 - C#andrewView Answer on Stackoverflow
Solution 6 - C#Daniel BarnesView Answer on Stackoverflow