当前位置:   article > 正文

字符串中最后出现的数值加1(判断字符串包含数字、按数字最后出现的位置截取、字符串拼接)_数字字符串加1

数字字符串加1

需求:input 输入如果值包含数字,那么最后输出结果,最后面的数值需要+1

var strData = 'abc1235ee1235d00019hhh'
var strData2 = 'value-0099'
    if (containsNumbers(strData)) {
        let specifyValue = strData.match(/\d+(\.\d+)?/g).pop()  //获取字符串中最后出现的数值
        let specifyValue2 = strData2.match(/\d+(\.\d+)?/g).pop()  //获取字符串中最后出现的数值
        console.log('最后的结果 :>> ', createStr(strData, specifyValue));  //abc1235ee1235d00020hhh
        console.log('最后的结果 :>> ', createStr(strData2, specifyValue));  //value-0100
    }

    function containsNumbers(str) {  // 判断字符串中是否包含数字
        return /\d/.test(str);
    }

    function createStr(str, i) {
        // rearSection 截取指定数值后面的字符冲
        let frontSection,rearSection,value;
        let backOf0;
        rearSection = str.substring(str.lastIndexOf(i.substr(i.length - 1, 1)), str.length) //截取以最后一个指定数值分割的后面部分
        //如果指定数值中包含0,并且数值的最后一位不为0
        if (i.indexOf('0') !== -1 && i.slice(i.length - 1) !== '0') {
            frontSection = str.substring(0, str.lastIndexOf('0')); // frontSection截取整个字符中以最后一位0前面的字符串
            backOf0 = i.substring(i.lastIndexOf('0'))  // backOf0 截取指定字符以最后一个0 分割的后面的数值
            if (i.slice(-1)=='9'&&(Number(backOf0) + 1).toString().length > Number(backOf0).toString().length) { //如果数值的最后一位是9,并且数值以最后一个0分割后加1后的长度比原来长度大(数值后为09,099,0999,0999,...)
                value = frontSection + (Number(backOf0) + 1) + rearSection.slice(1) //然后拼接
            } else {
                //如果数值加1后的长度没有变化拼接上前面的0(数值后为019,029,039,049,...)
                value = frontSection + '0' + (Number(backOf0) + 1) + rearSection.slice(1) //然后拼接
            }
        } else if(i.indexOf('0') !== -1 && i.slice(i.length - 1) == '0') {//如果指定数值中包含0,并且数值的最后一位为0
            frontSection = str.substring(0, str.lastIndexOf('0')); // frontSection截取整个字符中以最后一位0前面的字符串
            backOf0 = i.substring(i.lastIndexOf('0'))  // backOf0 截取指定字符以最后一个0 分割的后面的数值
            value = frontSection + (Number(backOf0) + 1) + rearSection.slice(1) //拼接
        }else {
            //正常状态下
            frontSection = str.substring(0, str.lastIndexOf(i)) // frontSection截取整个字符中以指定数值前面的字符串
            value = frontSection + (Number(i) + 1) + rearSection.slice(1) //拼接
        }
        console.log('value :>> ', value);
        return value
    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/63482
推荐阅读
相关标签
  

闽ICP备14008679号