javascript - 如何使用javascript计算下一个修订号

标签 javascript regex function revision

我的应用程序中有一个修订号属性,它只是一个字符串。我需要传入当前值并计算下一个有效值并返回该值。

这是有效的进展:

.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'; 变量结果;

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));

关于javascript - 如何使用javascript计算下一个修订号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17777494/

相关文章:

javascript - 选中或未选中时如何使用复选框在选项卡之间切换?

javascript - 使用 Javascript 隐藏然后显示文本 - 过渡不透明度

JavaScript + HTML : Button Not Calling on Function Onclick

javascript - 从 Ajax 查询中获取结果

java - 解析时不忽略空格 - Java

javascript - 如何在 js 中拆分字符串,但有一些异常(exception)

javascript - 不允许连续出现多个相同的字符

javascript提升: what would be hoisted first — variable or function?

c - 大于 200 万的埃拉托色尼筛 [C]

javascript - 获取嵌套在 polymer 纸张对话框中的自定义 Web 组件内内容的 clientHeight