Kuntady Nithesh
Kuntady Nithesh

Reputation: 11731

splitting a string based on multiple char delimiters

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 ?

Upvotes: 93

Views: 129369

Answers (7)

elle0087
elle0087

Reputation: 911

for every cases

    string s = "";
    s.Split(new string[] { ",", "DEL", ";"}, StringSplitOptions.None);

Upvotes: 0

Daniel Barnes
Daniel Barnes

Reputation: 396

// input string
string input = "[email protected];[email protected],[email protected];";

// 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 protected]
[email protected]
[email protected]

Upvotes: 0

CharithJ
CharithJ

Reputation: 47580

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);

Upvotes: 168

user166390
user166390

Reputation:

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.

Upvotes: 12

Austin Salonen
Austin Salonen

Reputation: 50245

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);
}

Upvotes: 7

manojlds
manojlds

Reputation: 301567

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);

Upvotes: 4

andrew
andrew

Reputation: 1264

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

Upvotes: 2

Related Questions