我想将字符串拆分为可以从2个字符到结尾的所有选项。
示例:
string temp = "abcdef";
输出:
ab
bc
cd
de
ef
abc
bcd
cde
def
abcd
bcde
cdef
abcde
bcdef
abcdef
答案 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));
}