循环计数字符串(从A到ABC)C#

时间:2016-12-29 19:57:22

标签: c#

我不知道如何搜索这个,或者我愿意。我需要做的是用字母而不是数字来计算。输入只包含字母和数字,没有空格或短划线。

例如,如果用户输入" A"开始和" ABC"为了结束它将输出A,B,C,...... AA,AB,AC,... ABC。

我可以通过将所有内容分解为数组,增加,最后一个索引,直到" Z"然后,增加索引,检查它是否等于end,然后再循环。当& #34; Z"被击中并且它有一个数字(被视为字符串)开始循环通过" 0 - 9"。

看起来似乎会比我想的更简单。我在Java中看到了一个我可以转换的解决方案,但没有完全理解它是如何工作的SO Post它使用的是MOD并且没有真正比较值。这只是计算机实验室的一个小项目,用于生成NetBIOS名称,供另一个程序使用。所有的名字都是连续的。

谢谢,

戴夫

1 个答案:

答案 0 :(得分:-1)

    Dim array1 As String() = {"a", "b", "c"}
    Dim array2 As String() = {"a", "b", "c"}

    Dim result = array1.SelectMany(Function(f) array2, Function(f, a) New With {Key .first = f, Key .second = a})

    Dim s As String = String.Empty
    For i As Integer = 0 To result.Count - 1
        s += result(i).first + result(i).second + " "
    Next

    MessageBox.Show(s)

输出:

  

AA   AB   AC   BA   BB   公元前   CA   CB   CC

我认为这可能接近你所追求的。类似于SQL中的交叉连接。这适用于VB.Net,但您可以运行代码转换器

编辑:(通过代码转换器(vb到c#),未经测试)

string[] array1 = {
    "a",
    "b",
    "c"
};
string[] array2 = {
    "a",
    "b",
    "c"
};

dynamic result = array1.SelectMany(f => array2, (f, a) => new {
    first = f,
    second = a
});

string s = string.Empty;
for (int i = 0; i <= result.Count - 1; i++) {
    s += result(i).first + result(i).second + " ";
}

MessageBox.Show(s);

//=======================================================
//Service provided by Telerik (www.telerik.com)
//Conversion powered by NRefactory.
//Twitter: @telerik
//Facebook: facebook.com/telerik
//=======================================================