splitting a string based on multiple char delimiters

前端 未结 5 1103
你的背包
你的背包 2020-12-01 11:53

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 :

相关标签:
5条回答
  • 2020-12-01 12:01

    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);
    
    0 讨论(0)
  • 2020-12-01 12:05

    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.

    0 讨论(0)
  • 2020-12-01 12:07

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

    0 讨论(0)
  • 2020-12-01 12:08
    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);
    }
    
    0 讨论(0)
  • 2020-12-01 12:24
    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);
    
    0 讨论(0)
提交回复
热议问题