JSFiddle - React, Tailwind, and code Playground
HTML
<div id="output"></div>
JavaScript
function zotSentenceCase(title) {
function capitalizePreservingUCASE(sentence) {
console.log("sentence", sentence);
function UCASEONLY(word) {
return word === word.toLocaleUpperCase();
}
var words = sentence.split(/\s+/);
var newSentencd = "";
for (var i=0, len=words.length; i<len; i++) {
var word = words[i];
console.log("word", word);
if (UCASEONLY(word)) {
newSentence += word;
} else if (0 == i) {
newSentence = word[0].toLocaleUpperCase()+word.substr(1).toLocaleLowerCase();
} else {
newSentence += word.toLocaleLowerCase();
}
if (i !== len-1) newSentence += " ";
}
console.log("newSentence", newSentence);
return newSentence;
}
var colParts = title.split(/\s*:\s*/);
console.log(colParts);
var whole = "";
for (var i=0, len=colParts.length; i<len; i++) {
var sentence = colParts[i];
console.log("sentence", i, sentence);
whole += capitalizePreservingUCASE(sentence);
if (i !== len-1) whole += ": ";
}
console.log("whole", whole);
return whole;
}
var test = "a sEntence with ADHD and Normal Words : plus a colon"
var res = zotSentenceCase(test);
document.getElementById("output").appendChild(document.createTextNode(res));