C# 获取具有拆分字符串输出的delimeters
我希望在多个delimeters处拆分字符串,并希望在输出中获得delimeters。例如,如果输入字符串是C# 获取具有拆分字符串输出的delimeters,c#,string,split,C#,String,Split,我希望在多个delimeters处拆分字符串,并希望在输出中获得delimeters。例如,如果输入字符串是Hello World,而我的delimeters是'l','o',那么字符串的输出数组应该是“He”,“l”,“l”,“o”,“W”,“o”,“r”,“l”,“d”。是否有内置函数String.Split没有这样的选项。我记得,StringTokenizer在java中有这个选项。请给出建议。您可以使用Regexp.Split进行此操作。 例如: Dim input As Strin
Hello World
,而我的delimeters是'l','o'
,那么字符串的输出数组应该是“He”,“l”,“l”,“o”,“W”,“o”,“r”,“l”,“d”
。是否有内置函数String.Split
没有这样的选项。我记得,StringTokenizer
在java中有这个选项。请给出建议。您可以使用Regexp.Split进行此操作。
例如:
Dim input As String = "Hello World"
Dim pattern As String = "(l)|(o)"
For Each result As String In Regex.Split(input, pattern)
Console.WriteLine("'{0}'", result)
Next
有关Regex.Split的更多信息,请访问以下扩展方法:
public static class SplitEx
{
public static string[] SplitInline(this string text, char delimeter)
{
var results = text.Split(delimeter);
return
results
.Take(1)
.Concat(
results
.Skip(1)
.SelectMany(x => new []
{
Convert.ToString(delimeter),
x,
}))
.Where(x => !String.IsNullOrWhiteSpace(x))
.ToArray();
}
public static string[] SplitInline(this string text, string delimeters)
{
if (String.IsNullOrEmpty(delimeters))
{
return new [] { text };
}
else
{
var head = delimeters[0];
var tail = new string(delimeters.Skip(1).ToArray());
return
text
.SplitInline(head)
.SelectMany(x => x.SplitInline(tail))
.ToArray();
}
}
}
它可以这样使用:
var text = "Hello World";
var result = text.SplitInline("lo");
我得到以下结果: