2017-02-02 2 views
2

ich habe auf einem Text etwas JavaScript bekehrt Fall ausgeführt wird:jQuery Convert Satz Fall

$(".container").click(function(){ 
    text = text.toLowerCase().replace(/\b[a-z]/g, function(block){ 
    return block.toUpperCase(); 
}); 

Welchen Text im Container div gegeben zurückgibt Fall zu verurteilen. Wenn jedoch ein Apostroph im Text, wie

can't get this to work 

es

Can'T Get This To Work 
zurückgibt

Wie kann ich das Hinter t nach dem Apostroph Aufenthalt Klein verwendet wird?

+1

Mögliche Duplikat [Zeichenfolge Titel Fall mit Javascript Konvertieren] (http://stackoverflow.com/questions/196972/convert-string-to-title-case-with-javascript) –

Antwort

1

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" 
+0

Danke, das ist genau das, was ich brauchte! – Jordan