【问题标题】:splitting a string based on multiple char delimiters基于多个字符分隔符拆分字符串
【发布时间】:2011-11-28 04:18:31
【问题描述】:

我有一个字符串 "4,6,8\n9,4"

我想根据 , 和 \n

拆分它

输出数组应该是

4
6
8
9
4

编辑:

现在我正在从控制台读取字符串,当我在控制台中输入上述字符串时,在后面的代码中我得到"4,6,8\\n9,4"。现在我想使用 "," and "\\n" 进行拆分。我怎样才能改变表达?

【问题讨论】:

    标签: c# .net string split


    【解决方案1】:

    使用string.Split(char [])

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

    编辑

    如果您收到任何不必要的空物品,请尝试关注。 String.Split Method (String[], StringSplitOptions)

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

    EDIT2

    这适用于您更新的问题。将所有必要的拆分字符添加到char []

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

    【讨论】:

    • 我无法使用.Split(new Char[]{'?='}) 实现此功能,但这样做有助于*.com/questions/1126915/…。答案很好
    • @CSharper 你做错了。你应该这样做.Split(new Char[]{'?','='})
    • 有没有办法知道数组中的哪个字符被用来分割字符串? (假设你需要知道这个值?)
    • @RobertGreenMBA 没有标准方法。您可以对每个字符使用拆分方法。根据您的要求创建自己的方法。
    • ReSharper 会推荐这种格式:new[] { ',', '\\', '\n' }
    【解决方案2】:

    另一种选择是使用Regex.Split。这在拆分序列更复杂时很有用。例如,如果空格也可以是拆分分隔符的一部分,例如:

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

    然后:

    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" }
    

    请注意,使用的正则表达式“更容易接受”——它忽略了 \n 之间的空白“空格”,它会接受“4 6 8 9 4”,所以上面要说明一点:给猫剥皮的方法不止一种。

    编码愉快。

    【讨论】:

      【解决方案3】:
      var s = "4,6,8\n9,4";
      var split = s.Split(new char[]{',', '\n'});
      

      但这一定是个骗局……

      编辑:处理评论。

      这段代码:

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

      输出这个:

      4
      6
      8
      9
      4
      

      编辑:从控制台读取输入是不同的。手动输入时\n 不同。

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

      【讨论】:

        【解决方案4】:
        string tosplit = "4,6,8\n9,4";
        var split = tosplit.Split(new Char [] {',', '\n' });
        

        以防万一您没有正确打印/查看:

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

        【讨论】:

        • @Nithesh Hebri - 它为我提供了你想要的正确输出。
        【解决方案5】:

        你能做一个 string.Replace('\n',',') 后跟 string.split(',') 吗?

        【讨论】:

          最近更新 更多