C# 获取具有拆分字符串输出的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

我希望在多个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 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");
我得到以下结果: