javascript修改字符串数组的子索引

时间:2016-09-24 09:42:09

标签: javascript arrays

我试图更改字符串数组的子索引,但它没有修改。有jsbin link



function LetterCapitalize(str) {
  var arr = str.split(" ");

  var nstr = "";
  for (var i = 0; i < arr.length; i++) {

    var ltr = arr[i][0];
    console.log('ltr: ' + ltr.toUpperCase());
    arr[i][0] = ltr.toUpperCase();
    nstr += arr[i] + " ";
  }
  str = nstr.trim();
  console.log("result: " + str);
  return str;
}

LetterCapitalize("hello world");
&#13;
&#13;
&#13;

3 个答案:

答案 0 :(得分:2)

您可以尝试以下内容:

function LetterCapitalize(str) { 
    var arr = str.split(" ");

    var nstr = "";
    for(var i=0; i<arr.length; i++){
        arr[i] = arr[i][0].toUpperCase()+arr[i].slice(1);
        nstr+=   arr[i] + " ";
    }

    str = nstr.trim();    

  console.log("result: " + str);

  return str; 

}

console.log(LetterCapitalize("hello world"));

产生差异的一行如下:

arr[i] = arr[i][0].toUpperCase() + arr[i].slice(1);

我们在这里做的是将字符串的第一个字母大写为arr[i],然后将大写字母与其余字母连接起来。

答案 1 :(得分:2)

那是因为(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String#Character_access):

  

对于使用括号表示法的字符访问,尝试删除或为这些属性赋值将不会成功。涉及的属性既不可写也不可配置。

即。字符串是不可变的。

答案 2 :(得分:2)

你也可以使用string.replace匹配每个单词中的第一个字符,使用回调函数来大写字符。

像这样。

&#13;
&#13;
var str = "hello world";

var newStr = str.replace(/\b(\w)/g, function(chr) {
  return chr.toUpperCase()
})

console.log(newStr)
&#13;
&#13;
&#13;