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 :
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);
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.
Can you do a string.Replace('\n',',') followed by the string.split(',') ?
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);
}
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);