【问题标题】:Split string and exclude last split拆分字符串并排除最后一个拆分
【发布时间】:2016-10-01 17:00:33
【问题描述】:

无论如何我可以拆分一个字符串并排除最后一个拆分吗?

我的数据如下所示:data1,data2,data3,,因此如果我拆分元素,数组中的最后一个元素将为空,所以我宁愿将其排除在拆分之外。

现在我有这个:

serialNumbers = delimitedSerials.ToString().Split(',');

当然,我知道我可以离开它,并且在我的 for 循环中只知道跳过最后一个元素,但想知道是否有一种简单的方法可以在拆分时将其排除。

【问题讨论】:

    标签: c# string split


    【解决方案1】:

    您可以使用 StringSplitOptions 参数对其进行拆分:

    data.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
    

    【讨论】:

    • 我正要使用 linq 和 LastIndexOf 发布答案...但这只是正确的内置方式.. :)
    • 哦,哇,不知道他们有这个选项。太酷了,谢谢!
    • 是的,这是 split 函数的另一个重载。它真的很方便,你可以分割多个字符。
    • 他的意思是如果你有fe。 data1,,data3,,第二个值也将被删除。编辑:它将返回带有 data1 和 data3 onyl 的 string[2]
    • 以防万一您需要仅删除最后一个值并保留其他空值的内容:data.Split(',').Reverse().Skip(1).Reverse().ToArray();。这反转了集合;跳过第一个(通常是最后一个);将 i 反转并返回为 string[]
    【解决方案2】:

    下面的代码有一个 Linq where 子句来排除空数据

    string input ="data1,data2,data3,";
    
    var output = input.Split(',').Where(value => !string.IsNullOrEmpty(value));
    
    foreach(string data in output)
        Console.WriteLine(data);
    

    【讨论】:

    • 当它已经是Split 的标准选项时,为什么要这样做? (请注意,这也没有回答标题中提出的问题,这使它变得更加陌生)。
    • 谢谢!这是一个有趣的建议,很高兴知道,但要使用另一种方法。
    猜你喜欢
    • 2022-01-19
    • 1970-01-01
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 2013-01-02
    • 2016-09-20
    • 2015-01-12
    相关资源
    最近更新 更多