使用javascript在mvc路由的一个部分中有效地增加数字

Efficient increment number in a section of a mvc route using javascript

本文关键字:一个 有效地 数字 增加数 增加 mvc javascript 路由 使用      更新时间:2023-09-26

我有一个很长的url路由,我只需要增加路由的一部分。增加这个值的正确代码看起来非常粗糙,似乎有缺陷。我目前在javascript中使用regex,但可能太复杂了:

/超级猫头鹰XIX-第01组-01/进攻/11

我想使用javascript:将组#路由增加到这个

/超级猫头鹰XIX-第02组-01/进攻/11

我目前正在使用这个代码:

        var nextRosterStr = "";
        nextRosterStr = $('#btnShowMore').attr("next-page");
        if (typeof nextRosterStr === 'undefined') {
            return;
        } else if (isUIButton === false) {
            // update the btnShowMore attribute as well
            var gNumberValue = nextRosterStr.match(/-group0?'d*-/g);
            gNumberValue = gNumberValue.toString().replace(/0/, "ZERO");
            var gNumberStr = gNumberValue.toString().match(/'d*/g);
            var gNumber = parseInt(gNumberStr.join(""), 10);
            gNumber++;
            var gNumberValueFinal = "";
            if (gNumber > 9) {
                gNumberValueFinal = gNumberValue.replace(/'d*/g, gNumber.toString(10));
                gNumberValueFinal = gNumberValueFinal.toString().replace("ZERO", "").toString();
            } else {
                gNumberValueFinal = gNumberValue.toString().replace(/'d+/g, gNumber.toString(10));
                gNumberValueFinal = gNumberValueFinal.toString().replace("ZERO", "0").toString();
            }
            var nextRosterStr = nextRosterStr.replace(/-group0?'d*-/g, gNumberValueFinal.toString());

顺便说一句,这是一个路线设置示例:

                new RouteMappingItem()
                    {
                        PageName   = "Superbowls",
                        Url        = "/{GameType}-{GameIdentifier}-group{groupNumber}-01/{formationName}/{rankingCount}",
                        Defaults   = new { controller = ...
                    },

必须有一种更简单的方法来做到这一点。

对于小于10和大于或等于10,没有不同的情况。获取数字,解析,递增,将其转换为前导为零的字符串,然后将其放回字符串中。

这里有一个技巧来转换为带前导零的字符串:

numberAsString = ('00' + number).slice(-2);

示例