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

本文关键字:有可能 选项 字符串 拆分 | 更新日期: 2023-09-27 18:10:58

我想将字符串拆分为从2个字符到末尾的所有选项

的例子:

string temp = "abcdef";
输出:

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

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

考虑使用枚举器实现:

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);
    }
}

您可以创建一个奇特的扩展方法:

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));
}