替换数组中的字符 - JavaScript

时间:2014-05-03 13:31:10

标签: javascript arrays string replace

我正在尝试替换数组中每个元素的第8个字符。我知道JavaScript没有内置函数来替换字符串字符。我能够在这个网站上找到可能有用的代码。它们接受字符串作为参数,但是当我传入一个像[0]这样的数组时,它不会改变字符串中的任何内容。这是为什么?我有办法让这个工作吗?提前感谢您的帮助。

var cookies = ["cartItem1", "cartItem2", "cartItem3", "cartItem4"];

function setCharAt(str,index,chr) {
    if(index > str.length-1) return str;
    return str.substr(0,index) + chr + str.substr(index+1);
}

function delCookie(){
    cookies.splice(0,1);
    setCharAt(cookies[0], 8, "Z");

}

delCookie();

我也是这样试过的:

var cookies = ["cartItem1", "cartItem2", "cartItem3", "cartItem4"];


String.prototype.replaceAt=function(index, character) {
    return this.substr(0, index) + character + this.substr(index+character.length);
};

function delCookie2(){
    cookies.splice(0,1);
    cookies[0].replaceAt(8, "Z");
}

delCookie2();

2 个答案:

答案 0 :(得分:2)

您的方法(setCharAtreplaceAt)都返回结果,这意味着您必须设置它:

function delCookie() {
   cookies.splice(0,1);
   cookies[0] = cookies[0].replaceAt(8, "Z"); 
   //or
   // cookies[0] = setCharAt(cookies[0], 8, "Z");
}

答案 1 :(得分:0)

" setCharAt"函数实际上并没有改变传入的字符串 - 它返回一个改变了相应字符的新字符串。为了获得您想要的行为,您必须用新的字符串替换数组中的旧字符串。