我的应用程序中有一个修订号属性,它只是一个字符串。我需要传递当前值并计算下一个有效值并将其返回。
这是有效的进度:
.A
.B
.C
0
0.A
0.B
1
1.A
etc
忘记整数,该数字在其他位置控制。这只处理带有句点的句点。
限制是:
第一个成分始终是数字(或什么都不是)
然后一段
然后是一个字母,不包括I和O(因为它们类似于1和0),一旦到达Z,它应该转到AA,AB,AC,...,ZZ
所以
If I pass in .A it should return .B
If I pass in 1.H it should pass back 1.J
If I pass in 1.Z it should pass back 1.AA
任何帮助,将不胜感激。
这就是我所拥有的-我只是不知道如何“增加”字母部分:
function calcNextRev(currentRev)
{
var revParts = currentRev.split(".");
var majorRev = revParts[0];
var currentMinorRev = revParts[1];
???
return majorRev + "." + newMinorRev;
}
最佳答案
尝试这个:
(demo here)
var alfab = ['A','B','C','D','E','F','G','H','J','K','L','M ','N','P','Q','R','S','T','U','V','W','Y','Z'];
var currentRev ='0.AZ';
var结果;
function calcNextRev(currentRev) {
var newMinorRev;
var revParts = currentRev.split(".");
var majorRev = revParts[0];
var currentMinorRev = revParts[1];
//Case string is 1 letter long
if (currentMinorRev.length == 1) {
for (i = 0; i < alfab.length; i++) {
if (currentMinorRev == alfab[i]) {
if (i == alfab.length - 1) {
newMinorRev = alfab[0] + alfab[0];
} else {
var ii = i + 1;
newMinorRev = alfab[ii];
}
}
}
}
//Case string is more than one letter long
if (currentMinorRev.length > 1) {
var currentMinorRev2 = currentMinorRev.split("");
var l = currentMinorRev2.length - 1;
for (o = 0; o < alfab.length; o++) {
if (currentMinorRev2[l] == alfab[o] && o == alfab.length - 1)
{
var currentalias = currentMinorRev2;
currentalias[l] = alfab[0];
currentalias.push(alfab[0]);
newMinorRev = currentalias.join('');
}
if (currentMinorRev2[l] == alfab[o] && o != alfab.length - 1)
{
var xo = o + 1;
var currentalias = currentMinorRev2;
currentalias[l] = alfab[xo];
newMinorRev = currentalias.join('');
o++;
}
}
};
result = majorRev + "." + newMinorRev;
return result;
}
alert(calcNextRev(currentRev));