javascript - replace方法在for循环里无效?
PHP中文网
PHP中文网 2017-04-11 10:11:31
[JavaScript讨论组]

我写了如下代码,想把data转换成汉子形式,为什么方式一会失败呢?[黑人问号脸]

//程序一:
var data='1,2,3';
var arr=['一','二','三'];
for(var i in arr){
    data=data.replace(i+1,arr[i]);
    console.log(i,arr[i]);
}
console.log(data);
结果:
0 一
1 二
2 三
0,1,2

//程序二:
data.replace(1,'一').replace(2,'二').replace(3,'三');
结果:
一,二,三
PHP中文网
PHP中文网

认证0级讲师

全部回复(4)
怪我咯

var data='1,2,3';
var arr=['一','二','三'];
for(var i in arr){

data=data.replace(parseInt(i)+1,arr[i]);
console.log(i);

}
console.log(data);

天蓬老师

i+1结果是字符串型的,结果依次是01,11,21


数字转中文数字方法如下:

var number = 52658746;
var N = [
    "零", "一", "二", "三", "四", "五", "六", "七", "八", "九"
];
function toChineseNum(num){
    var str = num.toString();
    var len = num.toString().length;
    var C_Num = [];
    for(var i = 0; i < len; i++){
        C_Num.push(N[str.charAt(i)]);
    }
    return C_Num.join('');
}
 
var chinese = toChineseNum(number);
alert(chinese);
天蓬老师

for(var i in arr) 这里面的 i 是字符串,你需要把它变为数值型,所以可以这样:

data=data.replace((+i+1),arr[i]);

天蓬老师
var data='1,2,3';
var arr=['一','二','三'];
for(var i in arr){
    data=data.replace(Number(i)+1,arr[i]);
    console.log(i,arr[i]);
}
console.log(data);

用parseInt会有坑的

parseInt(string, 10) // 后面指定10进制

例如在解析

parseInt(010)    // 这种情况返回的结果不定 10 或 8
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号