ฟังก์ชันด้านล่างนี้ไม่ได้เปลี่ยนแปลงส่วนอื่น ๆ ของสตริงนอกจากการพยายามแปลงตัวอักษรตัวแรกของคำทั้งหมด (เช่นตามนิยาม regex \w+
) เป็นตัวพิมพ์ใหญ่
นั่นหมายความว่าไม่จำเป็นต้องแปลงคำเป็น Titlecase แต่ทำตามที่ชื่อของคำถามระบุว่า: "Capitalize First Letter of Each Word In A String - JavaScript"
- อย่าแยกสตริง
- กำหนดแต่ละคำโดย regex
\w+
ที่เทียบเท่ากับ[A-Za-z0-9_]+
- ใช้ฟังก์ชัน
String.prototype.toUpperCase()
เฉพาะกับอักขระตัวแรกของแต่ละคำ
function first_char_to_uppercase(argument) {
return argument.replace(/\w+/g, function(word) {
return word.charAt(0).toUpperCase() + word.slice(1);
});
}
ตัวอย่าง:
first_char_to_uppercase("I'm a little tea pot");
first_char_to_uppercase("maRy hAd a lIttLe LaMb");
first_char_to_uppercase(
"ExampleX: CamelCase/UPPERCASE&lowercase,exampleY:N0=apples"
);
first_char_to_uppercase("…n1=orangesFromSPAIN&&n2!='a sub-string inside'");
first_char_to_uppercase("snake_case_example_.Train-case-example…");
first_char_to_uppercase(
"Capitalize First Letter of each word in a String - JavaScript"
);
แก้ไข 2019-02-07: หากคุณต้องการ Titlecase จริง (เช่นเฉพาะตัวอักษรตัวแรกตัวพิมพ์ใหญ่ตัวพิมพ์เล็กอื่น ๆ ทั้งหมด):
function titlecase_all_words(argument) {
return argument.replace(/\w+/g, function(word) {
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
});
}
ตัวอย่างที่แสดงทั้งสอง:
test_phrases = [
"I'm a little tea pot",
"maRy hAd a lIttLe LaMb",
"ExampleX: CamelCase/UPPERCASE&lowercase,exampleY:N0=apples",
"…n1=orangesFromSPAIN&&n2!='a sub-string inside'",
"snake_case_example_.Train-case-example…",
"Capitalize First Letter of each word in a String - JavaScript"
];
for (el in test_phrases) {
let phrase = test_phrases[el];
console.log(
phrase,
"<- input phrase\n",
first_char_to_uppercase(phrase),
"<- first_char_to_uppercase\n",
titlecase_all_words(phrase),
"<- titlecase_all_words\n "
);
}