我正在尝试在javascript中使用正确的字符串 - 到目前为止,我有这样的代码: 这似乎没有把第一个字母大写,而且我也坚持如何在第一个字母后小写所有字母。
function titleCase(str) {
var newstr = str.split(" ");
for(i=0;i<newstr.length;i++){
newstr[i].charAt(0).toUpperCase();
}
newstr = newstr.join(" ");
return newstr;
}
要清楚,我希望句子中的每个单词都能大写。
答案 0 :(得分:5)
我可以使用ES6提出最简洁的方法之一,同时仍然缺少正确的.capitalize()
字符串原型方法:
let sent = "these are just some words on paper"
sent.split(' ').map ( ([h, ...t]) => h.toUpperCase() + t.join('').toLowerCase() )
使用数组元素字符串上的解构来通过扩展运算符(使尾部成为一系列字符)获得头部和尾部,这些字符串在强制转换为小写之前首先连接。或者你可以用s => s[0].toUpperCase() + s.substring(1).toLowerCase()
替换它。哦,因为这个问题似乎表明了ES5,转换很便宜,虽然明显更加冗长:
function capitalize (sentence) {
return sentence.split(' ').map(
function (s) {
return s[0].toUpperCase() + s.substring(1).toLowerCase()
}).join(' ') ;
}
也就是说,假设您想要返回另一个句子。
答案 1 :(得分:3)
这是一段工作代码。代码中有问题的一行就是这一行:
a[i - 2] = temp;
该行获得每个单词的大写首字母,但它不会对其执行任何操作。下面代码的工作方式是它将第一个字符加上大写,然后附加单词的其余部分,然后将其分配回newstr[i].charAt(0).toUpperCase();
。
newstr[i]
答案 2 :(得分:3)
这应该有效。请注意我如何将function titleCase(str) {
var newstr = str.split(" ");
for(i=0;i<newstr.length;i++){
newstr[i] = newstr[i].charAt(0).toUpperCase() + newstr[i].substring(1).toLowerCase();
}
newstr = newstr.join(" ");
return newstr;
}
设置为所需的输出。像newstr[i]
这样的函数不会影响原始字符串。它们只返回带有所需属性的 new 字符串。
.toUpperCase()
答案 3 :(得分:2)
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1).toLowerCase();
}
此功能将第一个字母大写,并将其余部分缩小为字符串。
从这里找到的完美答案中改变了一点功能:How do I make the first letter of a string uppercase in JavaScript?
答案 4 :(得分:2)
如果您喜欢像我一样使用Ramda,那么您可以做一些干净有趣的事情:
import { concat, compose, head, join, map, split, tail, toLower, toUpper } from 'ramda';
const toWords = split(' ');
const capitalizeWords = map(s => concat(toUpper(head(s)), toLower(tail(s))));
const toSentence = join(' ');
const toTitleCase = compose(toSentence, capitalizeWords, toWords);
当然你可以随时将其缩减为
const capitalizeWords = map(s => concat(toUpper(head(s)), toLower(tail(s))));
const toTitleCase = compose(join(' '), capitalizeWords, split(' '));
答案 5 :(得分:1)
const titleCase = str => {
let string = str.toLowerCase().split(" ");
let arr = [];
string.map(x =>arr.push(x[0].toUpperCase() + x.slice(1)))
return arr.join(" ");
}
答案 6 :(得分:0)
function titleCase(str) {
var titleStr = str.split(' ');
for (var i = 0; i < titleStr.length; i++) {
titleStr[i] = titleStr[i].charAt(0).toUpperCase() + titleStr[i].slice(1).toLowerCase();
}
return titleStr.join(' ');
}
titleCase("i'm a little tea pot")
答案 7 :(得分:0)
我最近使用与第一个字母匹配的正则表达式和撇号帐户来重新解决此问题。希望它有用:
function titleCase(str) {
return str.toLowerCase().replace(/^\w|\s\w/g, function(firstLetter) {
return firstLetter.toUpperCase();
});
}
titleCase("I'm a little tea pot");
答案 8 :(得分:0)
我的解决方案
function titleCase(str) {
var myArr = str.toLowerCase().split(" ");
for (var a = 0; a < myArr.length; a++){
myArr[a] = myArr[a].charAt(0).toUpperCase() + myArr[a].substr(1);
}
return myArr.join(" ");
}
答案 9 :(得分:0)
function titleCase(str) {
var newArr = str.toLowerCase().split(" "),
firstLetter,
updArr = [];
for(var i=0;i<newArr.length;i+=1){
firstLetter = newArr[i].slice(0,1);
updArr.push(newArr[i].replace(firstLetter, firstLetter.toUpperCase()));
}
return updArr.join(" ");
}
答案 10 :(得分:0)
这里有一个function titleCase(string, array)
,它将一个字符串转换为标题大小写,其中每个单词的第一个字母大写,除了某些介词,文章和连词。如果一个单词跟随冒号,它将始终大写。您可以包含一个可选数组来忽略您选择的字符串,例如首字母缩略词。
我可能错过了ignore
数组中的一些异常字。随意添加它们。
function titleCase(str, array){
var arr = [];
var ignore = ["a", "an", "and", "as", "at", "but", "by", "for", "from", "if", "in", "nor", "on", "of", "off", "or", "out", "over", "the", "to", "vs"];
if (array) ignore = ignore.concat(array);
ignore.forEach(function(d){
ignore.push(sentenceCase(d));
});
var b = str.split(" ");
return b.forEach(function(d, i){
arr.push(ignore.indexOf(d) == -1 || b[i-1].endsWith(":") ? sentenceCase(d) : array.indexOf(d) != -1 ? d : d.toLowerCase());
}), arr.join(" ");
function sentenceCase(x){
return x.toString().charAt(0).toUpperCase() + x.slice(x.length-(x.length-1));
}
}
var x = titleCase("james comey to remain on as FBI director", ["FBI"]);
console.log(x); // James Comey to Remain on as FBI Director
var y = titleCase("maintaining substance data: an example");
console.log(y); // Maintaining Substance Data: An Example
答案 11 :(得分:0)
首先全部变为小写,然后打开每个单词,然后打开每个字母,首字母设置大写,然后一起
function titleCase(str) {
var copy=str;
copy=copy.toLowerCase();
copy=copy.split(' ');
for(var i=0;i<copy.length;i++){
var cnt=copy[i].split('');
cnt[0]=cnt[0].toUpperCase();
copy[i]=cnt.join('');
}
str=copy.join(' ');
return str;
}
titleCase("I'm a little tea pot");
答案 12 :(得分:-1)
function titleCase(str){
var strToArray = str.split(" ");
var newArray = [];
for(var i=0; i < strToArray.length; i++){
var element = strToArray[i].replace(strToArray[i][0], strToArray[i][0].toUpperCase());
newArray.push(element);
}
return (newArray.join(" "));
}