Der Grund Ihr Ausdruck nicht funktioniert, weil ein word boundary, \b
, für (^\w|\w$|\W\w|\w\W)
kurz ist, und das beinhaltet nicht '
Zeichen, was bedeutet, dass die Zeichen nach '
, in Ihrem Fall war es t
, ausgewählt wurde.
Sie könnten \b
mit (^|\s)
, ersetzen, die /(^|\s)[a-z]/g
wäre, und das wäre in Ihrem Fall:
$(".container").click(function() {
text = text.toLowerCase().replace(/(^|\s)[a-z]/g, function(block) {
return block.toUpperCase();
});
});
Allerdings wäre der beste Ansatz \w\S*
, den regulären Ausdruck zu verwenden sein, die das Wählen Sie ein beliebiges Wortzeichen aus (z. B. [a-zA-Z0-9_]
), gefolgt von einem Zeichen ohne Zeichenkette (z. B. [^\r\n\t\f ]
).
Damit können Sie jeden Teilwort-Teilstring auswählen. Von dort können Sie das erste Zeichen nutzen und die restlichen Zeichen in Kleinbuchstaben umwandeln:
$(".container").click(function() {
text = text.replace(/\w\S*/g, function(word) {
return word.charAt(0).toUpperCase() + word.substr(1).toLowerCase();
});
});
Zum Beispiel würde kehrt das folgende Ausschnitt:
"can't get this to work".replace(/\w\S*/g, function(word) {
return word.charAt(0).toUpperCase() + word.substr(1).toLowerCase();
});
// > "Can't Get This To Work"
Mögliche Duplikat [Zeichenfolge Titel Fall mit Javascript Konvertieren] (http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript) –