使用LINQ在“\\”和/或“/”上拆分字符串?

时间:2012-03-16 10:12:00

标签: c# linq split

如何使用LINQ

在“\”和/或“/”上拆分以下字符串

我说和/或用于“\”和“/”,因为在我的文件路径中,我可能最终只能获得正斜杠,仅反斜杠或两者兼而有之。

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

 "temp\\SimpleRec\\bin\\Debug\\Geming.SimpleRec.vshost.exe"

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

由于

6 个答案:

答案 0 :(得分:1)

你不需要LINQ:

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

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

答案 1 :(得分:1)

有时,我认为LINQ试图用于所有事情,当它没有。

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

答案 2 :(得分:1)

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

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

希望这有帮助!

答案 3 :(得分:1)

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

One of my implementations的{p> String Calculator Kata使用此方法(根本没有Split)。请参阅InternalAdd()方法。我采用了头部和尾部的功能性方法。使用.Take()将字符串分割为头部和尾部,并返回头部+为尾部调用相同函数的递归结果。

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

    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)

您还可以通过String.Join()

进一步摆脱tail.Aggregate(new StringBuilder(), (sb, c) => sb.Append(c)).ToString();

答案 4 :(得分:1)

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

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

答案 5 :(得分:0)

不需要LINQ,只需执行此操作:

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