将字符串拆分为可以的所有选项

时间:2014-07-01 05:44:39

标签: c# string split

我想将字符串拆分为可以从2个字符到结尾的所有选项。

示例:

string temp = "abcdef";

输出:

ab
bc
cd
de
ef
abc
bcd
cde
def
abcd
bcde
cdef
abcde
bcdef
abcdef

2 个答案:

答案 0 :(得分:4)

使用枚举器考虑此实现:

private static IEnumerable<string> Substrings(string input)
{
    for (int l = 2; l <= input.Length; l++)
    {
        for (int i = 0; i <= input.Length - l; i++)
        {
            yield return input.Substring(i, l);
        }
    }
}

用法:

static void Main(string[] args)
{
    foreach (var str in Substrings("abcdef"))
    {
        Console.WriteLine(str);
    }
}

答案 1 :(得分:0)

你可以创建一个花哨的扩展方法:

static class StringExtensions {

  public static IEnumerable<String> SplitInParts(this String s, Int32 partLength) {
    if (s == null)
      throw new ArgumentNullException("s");
    if (partLength <= 0)
      throw new ArgumentException("Part length has to be positive.", "partLength");

    for (var i = 0; i < s.Length; i += partLength)
      yield return s.Substring(i, Math.Min(partLength, s.Length - i));
  }

}

然后您可以像这样使用它:

for (I = 2; I <= MyStr.Lenght; I++) 
{
  var parts = MyStr.SplitInParts(I);
  Console.WriteLine(String.Join(" ", parts));
}