我想在多个分隔符处拆分一个字符串,并希望获得输出中的分隔符。例如,如果输入字符串是Hello World
而我的分隔符是'l','o'
,则字符串的输出数组应该是"He", "l", "l", "o", " W","o","r","l","d"
。是否有内置函数? String.Split
没有这样的选择。我记得,java中的StringTokenizer
有这个选项。请指教。
答案 0 :(得分:0)
您可以使用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的详细信息,请访问http://msdn.microsoft.com/en-us/library/8yttk7sy.aspx
答案 1 :(得分:0)
这些扩展方法有效:
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");
我得到以下结果: