Table Maker3schools TranslateImage CompressorFavicon Icon GeneratorCrop & Resize Image
Apu
Apu January 19, 2024 . #HowTo . #Javascript

Convert string to title case with javascript example

I've been trying to convert a string to title case using JavaScript. I have a snippet of code, but I'm facing some issues.

Example:



<script>
function toTitleCase(str) {
return str.replace(/\w\S*/g, function(txt) {
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
});
}

let inputString = "this is a test string";
let titleCaseString = toTitleCase(inputString);
console.log(titleCaseString);
</script>

This code attempts to convert each word in a string to title case. However, I'm encountering a problem with words like "I" and "JavaScript", which should remain in uppercase. Can someone help me modify this code to handle such cases?

save
listen
AI Answer
3 Answers
  1. I see the issue you're facing. To handle exceptions like "I" and "JavaScript," you can create an array of words that should stay in uppercase and check against this list.
    https://www.3schools.in/p/embed.html?q=CjxzY3JpcHQ+CiBmdW5jdGlvbiB0b1RpdGxlQ2FzZShzdHIpIHsKICBjb25zdCBleGNlcHRpb25zID0gWyJJIiwgIkphdmFTY3JpcHQiXTsKICByZXR1cm4gc3RyLnJlcGxhY2UoL1x3XFMqL2csIGZ1bmN0aW9uKHR4dCkgewogICAgaWYgKGV4Y2VwdGlvbnMuaW5jbHVkZXModHh0KSkgewogICAgICByZXR1cm4gdHh0OwogICAgfSBlbHNlIHsKICAgICAgcmV0dXJuIHR4dC5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHR4dC5zdWJzdHIoMSkudG9Mb3dlckNhc2UoKTsKICAgIH0KICB9KTsKfQoKbGV0IGlucHV0U3RyaW5nID0gInRoaXMgaXMgYSB0ZXN0IHN0cmluZyBpbiBKYXZhU2NyaXB0IjsKbGV0IHRpdGxlQ2FzZVN0cmluZyA9IHRvVGl0bGVDYXNlKGlucHV0U3RyaW5nKTsKY29uc29sZS5sb2codGl0bGVDYXNlU3RyaW5nKTsKPC9zY3JpcHQ+
    Now, words in the "exceptions" array won't be converted to title case.
    • Your solution is good, but what if I have some acronyms like "HTML" or "CSS" in the string that should also remain uppercase? We need to consider such cases too. Here's an enhanced version of your code:https://www.3schools.in/p/embed.html?q=CjxzY3JpcHQ+CiBmdW5jdGlvbiB0b1RpdGxlQ2FzZShzdHIpIHsKICBjb25zdCBleGNlcHRpb25zID0gWyJJIiwgIkphdmFTY3JpcHQiLCAiSFRNTCIsICJDU1MiXTsKICByZXR1cm4gc3RyLnJlcGxhY2UoL1xiXHcrXGIvZywgZnVuY3Rpb24odHh0KSB7CiAgICBpZiAoZXhjZXB0aW9ucy5pbmNsdWRlcyh0eHQpKSB7CiAgICAgIHJldHVybiB0eHQ7CiAgICB9IGVsc2UgewogICAgICByZXR1cm4gdHh0LmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdHh0LnN1YnN0cigxKS50b0xvd2VyQ2FzZSgpOwogICAgfQogIH0pOwp9CgpsZXQgaW5wdXRTdHJpbmcgPSAidGhpcyBpcyBhIHRlc3Qgc3RyaW5nIGluIEphdmFTY3JpcHQsIEhUTUwsIGFuZCBDU1MiOwpsZXQgdGl0bGVDYXNlU3RyaW5nID0gdG9UaXRsZUNhc2UoaW5wdXRTdHJpbmcpOwpjb25zb2xlLmxvZyh0aXRsZUNhc2VTdHJpbmcpOwo8L3NjcmlwdD4=
      This code uses a word boundary ("\b") to match whole words and handles acronyms like "HTML" and "…
    • Thanks, Your solution works perfectly and handles acronyms too. But now, I've encountered another issue. If I have a word with a hyphen, like "multi-platform," it's not being converted correctly. Is there a way to fix this?
    Reply Delete
    Share
    Reply Delete
    Share
Write Your Answer
loading
back
View All