replace方法在for循环里无效?

robot_l
  • 72

我写了如下代码,想把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,'三');
结果:
一,二,三
回复
阅读 3.6k
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
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏