使用拆分字符串输出获取分隔符

时间:2014-03-14 06:22:39

标签: c# string split

我想在多个分隔符处拆分一个字符串,并希望获得输出中的分隔符。例如,如果输入字符串是Hello World而我的分隔符是'l','o',则字符串的输出数组应该是"He", "l", "l", "o", " W","o","r","l","d"。是否有内置函数? String.Split没有这样的选择。我记得,java中的StringTokenizer有这个选项。请指教。

2 个答案:

答案 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");

我得到以下结果:

result