在“”上拆分字符串";和/或“/";使用LINQ

本文关键字:quot 使用 LINQ 字符串 拆分 | 更新日期: 2023-09-27 18:28:11

如何使用LINQ 在"''"和/或"/"上拆分以下字符串

我说和/或代表"''"answers"/",因为在我的文件路径中,我可能只得到正斜杠,只得到反斜杠,或者两者兼而有之。

 "temp''SimpleRec/bin/Debug/Geming.SimpleRec.vshost.exe"
 "temp''SimpleRec''bin''Debug''Geming.SimpleRec.vshost.exe"
 "temp/SimpleRec/bin/Debug/Geming.SimpleRec.vshost.exe"

感谢

在“”上拆分字符串";和/或“/";使用LINQ

String.Split()似乎是最好的选择,但为了好玩,也可以使用LINQ。

我的字符串计算器Kata的一个实现使用了这种方法(根本没有Split)。参见InternalAdd()方法。我采用了从头到尾的功能性方法。使用.Take()将字符串划分为head和tail,并返回head+为tail调用相同函数的递归结果。

一个字符分隔符的示例代码如下(当分隔符越来越长时,情况变得越来越复杂):

    private IEnumerable<string> BreakString(string source)
    {
        var delimiter = '/';
        var head = source.TakeWhile(c => c != delimiter);
        if (!head.Any())
        {
            yield break;
        }
        var tail = source.SkipWhile(c => c != delimiter)
            .Skip(1);
        yield return String.Join("", head);
        foreach (var t in BreakString(String.Join("", tail)))
        {
            yield return t;
        }
    }

// usage
from s in BreakString(source)

您也可以更进一步,通过tail.Aggregate(new StringBuilder(), (sb, c) => sb.Append(c)).ToString(); 来消除String.Join()

您不需要LINQ:

string[] values = myString.Split(new []{'''', '/'});

为这样的任务引入LINQ只会增加复杂性并降低可读性。

有时,我认为LINQ被试图用于所有事情,但事实并非如此。

string[] data = myString.Split(new Char[]{'''', '/'});

这里不需要使用LinQ,默认的Split()方法将完成以下工作:

var path = "temp''SimpleRec/bin/Debug/Geming.SimpleRec.vshost.exe"
var parts = path.Split(new[] { '/', '''' });

希望这能有所帮助!

您可以通过以下方式使用LINQ进行拆分:

var list=from item in str.Split(new string[] { "''","/" }, StringSplitOptions.None)
         select item;

不需要LINQ,只需执行以下操作:

var path = @"temp''SimpleRec/bin/Debug/Geming.SimpleRec.vshost.exe";
var split = path.Split(new [] { '/', '''' }, StringSplitOptions.RemoveEmptyEntries);
相关文章: