gpt4 book ai didi

javascript - 仅大写缩写中的第一个字母

转载 作者:行者123 更新时间:2023-11-29 18:02:41 25 4
gpt4 key购买 nike

我的挑战是将字符串中每个单词的首字母大写,同时确保所有其他字母均为小写。我花了更多的时间,然后我愿意承认这一点,我的代码如下所示。大约完成了 95%。

唯一的缺陷是它会将像“I'm”这样的缩写返回为“I'M”。出于某种原因,它将收缩视为两个单独的词。我测试了这个我在第一个字母大写的步骤之后立即放置了一个 console.log(我在示例中将其注释掉了)。它返回它在同一步骤中将“I”和“M”都大写。我怎样才能让它只改变“我”?

function titleCase(str) {

str = str.toLowerCase(); //make everything lowercase
str = str.split(" "); //make the string to array

for(i = 0; i < str.length; i++){
var strItem = str[i]; //take item in array
strItem = strItem.replace(/\b./g, function(m){ return m.toUpperCase(); }); //capitalize it
//console.log(strItem);
str[i] = strItem; //put changed item back into array
}

str = str.join(" "); //turn array back into string
return str;
}

titleCase("I'm a little tea pot");

感谢您的宝贵时间。

最佳答案

您的问题似乎是您在替换表达式中使用了全局匹配。

删除 g

function titleCase(str) {
str = str.toLowerCase(); // Make everything lowercase
str = str.split(/\s+/); // Make the string to array
for (var i = 0; i < str.length; i++) {
var strItem = str[i]; // Take item in array
strItem = strItem.replace(/\b./,
function(m) {
return m.toUpperCase(); // Capitalize it
}
);
str[i] = strItem; // Put changed item back into array
}

return str.join(" "); // Turn array back into string
}

document.body.innerHTML = titleCase("I'm a little tea pot");

简化

您可以创建一个capitalCase 函数并将其用作每个单词的映射(回调)函数。

function titleCase(str) {
return str.split(/\s+/).map(captitalCase).join(' ');
}

function captitalCase(str) {
return str.charAt(0).toUpperCase() + str.substring(1).toLowerCase();
}

document.body.innerHTML = titleCase("I'm a little tea pot");

保留空白

如果你想保留空白,你可以用它们各自的 capitalCase 等效替换所有序列非空白字符。

function titleCase(str) {
return str.replace(/(\S+)/g, function(m) {
return captitalCase(m);
});
}

function captitalCase(str) {
return str.charAt(0).toUpperCase() + str.substring(1).toLowerCase();
}

document.body.innerHTML = titleCase("I'm a little \n tea pot");
body {
white-space: pre;
}

关于javascript - 仅大写缩写中的第一个字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33759045/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com