我正在编写一个测试函数来大写句子中的每个单词。我最终解决了它;然而,我认为解决问题的第一次尝试之一并没有奏效。
function capSentence(str) {
var strArray = str.split(" ");
var answer = '';
var temp = '';
for(var i = 0; i < strArray.length; i++){
strArray[i][0] = strArray[i][0].toUpperCase();
answer += strArray[i];
if(i !== strArray.length-1){
answer += ' ';
}
}
return answer;
}
capSentence("this is a test");
我认为上面的代码会输出&#34;这是一个测试&#34;,而是输出&#34;这是一个测试&#34;。
strArray[i][0] = strArray[i][0].toUpperCase();
似乎没有任何影响。那是为什么?
答案 0 :(得分:1)
@ thefourtheye的评论是正确的。你需要建立一个新的字符串。
function capSentence(str) {
var strArray = str.split(" ");
var answer = '';
var temp = '';
for(var i = 0; i < strArray.length; i++){
answer += strArray[i][0].toUpperCase();
answer += strArray[i].slice(1,strArray[i].length);
if(i !== strArray.length-1){
answer += ' ';
}
}
return answer;
}
答案 1 :(得分:0)
字符串在Javascript中是不可变的。这就是为什么你无法改变strArray的值。
但你可以这样做:
function capSentence(str) {
strArray = str.split(" ");
console.log(strArray);
var answer = '';
var temp = '';
for(var i = 0; i < strArray.length; i++){
for (var j = 0; j< strArray[i].length; j++) {
if(j==0) {
temp = strArray[i][j].toUpperCase();
} else {
temp+=strArray[i][j];
}
}
answer += temp;
if(i !== strArray.length-1){
answer += ' ';
}
}
return answer;
}
这将退回"This Is A Test"
答案 2 :(得分:0)
试试这个简单的代码段,
function capSentence(str) {
var strArray = str.split(" ");
var answer = '';
var temp = '';
for(var i = 0; i < strArray.length; i++){
answer += (strArray[i].substring(0,1)).toUpperCase()+strArray[i].substring(1);
if(i !== strArray.length-1){
answer += ' ';
}
}
return answer;
}