2

我需要一个向字符串添加后缀的方法(或 2?)。

假设我有字符串“Hello”。

如果我单击选项 1,它应该创建一个字符串列表,例如

你好 a 你好 b 你好 c

我已经覆盖了那部分。

下一个选项我需要它来创建一个列表,例如

你好 aa 你好 ab 你好 ac ... 你好 ba 你好 bb 你好 bc 等等....

此外...每个选项还有 2 个其他选项..

假设我想将后缀 1 添加为 az 并将后缀 2 添加为 0-9 那么它将是

你好 a0 你好 a1

有没有人可以帮助我?这就是我做单个字母增量的方式。

  if (ChkSuffix.Checked)
            {
                if (CmbSuffixSingle.Text == @"a - z" && CmbSuffixDouble.Text == "")
                {
                    var p = 'a';

                    for (var i = 0; i <= 25; i++)
                    {
                        var keyword = TxtKeyword.Text + " " + p;
                        terms.Add(keyword);
                        p++;
                        //Console.WriteLine(keyword);
                    }
                }
            }
4

1 回答 1

2

尝试使用这些扩展方法:

public static IEnumerable<string> AppendSuffix(
    this string @this, string dictionary)
{
    return dictionary.Select(x => @this + x);
}

public static IEnumerable<string> AppendSuffix(
    this string @this, string dictionary, int levels)
{
    var r = @this.AppendSuffix(dictionary);
    if (levels > 1)
    {
        r = r.SelectMany(x => x.AppendSuffix(dictionary, levels - 1));
    }
    return r;
}

public static IEnumerable<string> AppendSuffix(
    this IEnumerable<string> @this, string dictionary)
{
    return @this.SelectMany(x => x.AppendSuffix(dictionary));
}

public static IEnumerable<string> AppendSuffix(
    this IEnumerable<string> @this, string dictionary, int levels)
{
    var r = @this.AppendSuffix(dictionary);
    if (levels > 1)
    {
        r = r.SelectMany(x => x.AppendSuffix(dictionary, levels - 1));
    }
    return r;
}

然后像这样称呼他们:

"Hello ".AppendSuffix("abc"); // Hello a, Hello b, Hello c
"Hello ".AppendSuffix("abc", 2); // Hello aa to Hello cc
"Hello "
    .AppendSuffix("abc")
    .AppendSuffix("0123456789"); // Hello a0 to Hello c9
于 2013-08-28T01:36:22.637 回答