我不知道如何搜索这个,或者我愿意。我需要做的是用字母而不是数字来计算。输入只包含字母和数字,没有空格或短划线。
例如,如果用户输入" A"开始和" ABC"为了结束它将输出A,B,C,...... AA,AB,AC,... ABC。
我可以通过将所有内容分解为数组,增加,最后一个索引,直到" Z"然后,增加索引,检查它是否等于end,然后再循环。当& #34; Z"被击中并且它有一个数字(被视为字符串)开始循环通过" 0 - 9"。
看起来似乎会比我想的更简单。我在Java中看到了一个我可以转换的解决方案,但没有完全理解它是如何工作的SO Post它使用的是MOD并且没有真正比较值。这只是计算机实验室的一个小项目,用于生成NetBIOS名称,供另一个程序使用。所有的名字都是连续的。
谢谢,
戴夫
答案 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
//=======================================================