【问题标题】:how to split string base on "\r\n" in c# when string value have "\r\n\r\n" [duplicate]当字符串值具有“\r\n\r\n”时,如何在c#中基于“\r\n”拆分字符串[重复]
【发布时间】:2020-06-08 05:36:55
【问题描述】:

我有这个字符串

var str="\r\nFeatures\r\nWins\r\n\r\n";

我想在 "\r\n" 上拆分,但在两个 "\r\n\r\n" 之间的值为 null 或空格

我想得到结果 3 项 = Features Wins nullorwhitespace

我写了这段代码,但得到了 2 个项目 = Features Wins

var val = str.TrimStart('\r', '\n', '\t').TrimEnd('\r', '\n', '\t').Split("\r\n");

【问题讨论】:

  • var result = str.Split(new[] { "\n" }, StringSplitOptions.None).Where(s => !s.Equals("\r")).ToArray();

标签: c#


【解决方案1】:

简单的选择是将“\r\n\r\n”替换为您想在两者之间看到的任何内容,然后拆分。

var val = str
       .Replace("\r\n\r\n", "\r\nempty\r\n")
       .Split(new []{"\r\n"}, System.StringSplitOptions.RemoveEmptyEntries);

【讨论】:

    【解决方案2】:

    您当前代码的问题在于 TrimEnd 调用删除了所有尾随 \r\n 字符。

    str.TrimStart('\r', '\n', '\t') // "Features\r\nWins\r\n\r\n"
       .TrimEnd('\r', '\n', '\t') // "Features\r\nWins"
       .Split("\r\n"); // ["Features", "Wins"]
    

    对于您的示例文本,您可以执行以下操作以获得您想要的结果。不过,这取决于您想对标签执行的操作:

    var str="\r\nFeatures\r\nWins\r\n\r\n";
    
    var val = str.TrimStart('\r') // "\nFeatures\r\nWins\r\n\r\n"
                 .TrimStart('\n') // "Features\r\nWins\r\n\r\n"
                 .TrimEnd('\n') // "Features\r\nWins\r\n\r"
                 .TrimEnd('\r') // "Features\r\nWins\r\n"
                 .Split("\r\n"); // ["Features, "Wins", ""]
    

    【讨论】:

      【解决方案3】:

      您可能也想试试这个。它还在开头和结尾保留"" 字符,但可以通过删除结果数组的第一个和最后一个元素来排除它们:

      var array = str.Split(new string[] { "\r\n" }, StringSplitOptions.None); // 
      array = ["","Features","","Wins",""]
      

      这里是参考链接:Split a string by another string in C#

      【讨论】:

        猜你喜欢
        • 2015-06-16
        • 2011-06-30
        • 1970-01-01
        • 1970-01-01
        • 2020-05-21
        • 1970-01-01
        • 2014-04-17
        • 1970-01-01
        相关资源
        最近更新 更多