我仍然是JavaScript的新手,我遇到了将数组中第一个字符串变为大写的问题。
我已经达到了这样的程度,即我已经获得了所有发短信的小写,逐个字符地反转了文本,并将其变成了一个字符串。我现在需要将字符串中的第一个字母大写为大写。
function yay () {
var input = "Party like its 2015";
return input.toLowerCase().split("").reverse().join("").split(" ");
for(var i = 1 ; i < input.length ; i++){
input[i] = input[i].charAt(0).toUpperCase() + input[i].substr(1);
}
}
console.log(yay());
我需要输出“partY likE itS 2015”
答案 0 :(得分:3)
您在没有透露所需结果的情况下发布了您的初始问题,感到很沮丧。由此引发了很多混乱。现在,期望的结果终于明确了 - 这是一个答案。
你可以小写整个事物,然后分成单词,通过在字中加上最后一个字符来重建数组中的每个单词,然后重新加入数组:
function endCaseWords(input) {
return input.toLowerCase().split(" ").map(function(item) {
return item.slice(0, -1) + item.slice(-1).toUpperCase();
}).join(" ");
}
document.write(endCaseWords("Party like its 2015"));
这是一步一步的解释:
.split(" ")
分割成一个单词数组.map()
迭代数组.join(" ")
重新组合成一个字符串您还可以使用自定义回调替换正则表达式:
function endCaseWords(input) {
return input.toLowerCase().replace(/.\b/g, function(match) {
return match.toUpperCase();
});
}
document.write(endCaseWords("Party like its 2015"));
仅供参考,您的原始代码存在许多问题。最大的错误是,只要你在一个函数中return
,就不会执行该函数中的其他代码,因此你的for
循环从未执行过。
然后,真的没有理由需要reverse()
字符,因为一旦你分成单词,你就可以访问每个单词中的最后一个字符。
答案 1 :(得分:3)
您需要将其分配给input
,而不是返回结果拆分和反转字符串。否则,在执行循环操作之前从函数返回,使单词大写。
然后在for
循环后,您应该返回连接的字符串。
此外,由于您在大写之前已经反转了字符串,因此您应该将每个单词的 last 字母大写。然后,您需要在重新加入之前反转数组,以便按原始顺序恢复单词。
function yay () {
var input = "Party like its 2015";
input = input.toLowerCase().split("").reverse().join("").split(" ");
for(var i = 1 ; i < input.length ; i++){
var len = input[i].length-1;
input[i] = input[i].substring(0, len) + input[i].substr(len).toUpperCase();
}
return input.reverse().join(" ");
}
alert(yay());
&#13;
答案 2 :(得分:1)
这就是我要做的事情:
function yay () {
var input = "Party like its 2015";
return input.split(" ").map(function(item) {
return item.charAt(0).toUpperCase() + item.slice(1).toLowerCase();
}).join(" ");
}
console.log(yay());
&#13;
答案 3 :(得分:1)
您可以使用正则表达式:
input.toLowerCase().replace(/[a-z]\b/g, function (c) { return c.toUpperCase() });
或者,如果您可以使用arrow functions,只需:
input.toLowerCase().replace(/[a-z]\b/g, c => c.toUpperCase())
答案 4 :(得分:0)
一些丑陋但有效的代码:
var text = "Party like its 2015";
//partY likE itS 2015
function yay(input) {
input = input.split(' ');
arr = [];
for (i = 0; i < input.length; i++) {
new_inp = input[i].charAt(0).toLowerCase() + input[i].substring(1, input[i].length - 1) + input[i].charAt(input[i].length - 1).toUpperCase();
arr.push(new_inp);
}
str = arr.join(' ');
return str;
}
console.log(yay(text));
答案 5 :(得分:0)
尝试使用PHP.js中的ucwords
。实际上,这很简单。
String.prototype.ucwords = function() {
return (this + '')
.replace(/^([a-z\u00E0-\u00FC])|\s+([a-z\u00E0-\u00FC])/g, function($1) {
return $1.toUpperCase();
});
}
var input = "Party like its 2015";
input = input.charAt(0).toLowerCase() + input.substr(1);
input = input.split('').reverse().join('').ucwords();
input = input.split('').reverse().join('');
注意:我将其函数修改为String
函数,因此方法链接可以正常工作。
答案 6 :(得分:0)
function yay(str)
{
let arr = str.split(' ');
let farr = arr.map((item) =>{
let x = item.split('');
let len = x.length-1
x[len] = x[len].toUpperCase();
x= x.join('')
return x;
})
return farr.join(' ')
}
var str = "Party like its 2015";
let output = yay(str);
console.log(output) /// "PartY likE itS 2015"