将字符串中的数字替换为该数字减1 JS

请教下,将字符串中的数字替换为该数字减1 JS
最新回答
玩命丕玩心

2024-11-29 08:20:28

以下函数可以将

字符串
中的数字替换为该数字-1,非数字保持不变,0替换为-1

function func(str){
    var output = [];
    for(var i = 0, iLen = str.length; i < iLen; i++){
        if(str[i].match(/\d/)){
            output.push(str[i] - 1 + '');
        }else{
            output.push(str[i]);
        }
    }
    return output.join('');
}
func('123abc456def');//"012abc345def"

解释:

  1. str[i].match(/\d/)判断该字符是否为数字

  2. output.push(str[i] - 1 + '');将数字减去1后通过加上空字符串隐式转换为字符串类型

  3. output.push(str[i]);将非数字类型的字符串直接放到输出数组中

  4. output.join('')将数组转为一个字符串

女中豪杰

2024-11-29 08:06:50

这个是js解释器编写的原因。
简单的理解是:‘-’这个在js里面没有其它的用途,只用于数字运算操作。只支持减法。
而且js具有隐式类型转换,所以会把非数字的转换成数字,如果转换不成功,结果为NaN。
爱是毒药

2024-11-29 08:54:44

<script type="text/javascript">
function GetnewStr(oldstr) {
var newstr = "";
for (var i = 0; i < oldstr.toString().length; i++) {
var onec = oldstr.toString().substr(i, 1);
if (onec >= 0 && onec < 10)
onec = Number(onec) - 1;
newstr += onec;
}
return newstr;
}
alert(GetnewStr("ad2df2df5"))
</script>
追问
alert(GetnewStr("ad2df2df50"));输出结果的最后一项变成了5-1.
我这边的实际情况是,有一个“已成功(10个)”这样的东西,我想把其中的数字减一。
追答
哦,这样啊,你是想把整个数字-1而不是把每个数字-1咯,等会啊。

function GetnewStr(oldstr) {
var newstr = "";
var num = "";
for (var i = 0; i = 0 && onec
依旧殇心

2024-11-29 08:27:13

1