2016-09-24 17 views
1

我試圖改變字符串數組的子索引,但它不是修改。有jsbin linkjavascript修改字符串數組的子索引

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");

+1

因爲字符串是不可變的。 –

回答

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

更好地使用'return arr.join('');而不是在nstr變量中連接。 – jcubic

2

您可以使用string.replace匹配每個單詞中的第一個字符,使用回調函數以大寫字符。

就是這樣。

var str = "hello world"; 
 

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

 
console.log(newStr)