在“”上拆分字符串";和/或“/";使用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"
感谢
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);