2011-07-04 6 views
5

Mam następujący kod przystosowaną z poprzedniego zapytania/odpowiedzi:Javascript/jQuery wielka litera tytułu z pewnymi wyjątkami?

var str = $('title').text(); 
str = str.toLowerCase().replace(/\b[a-z]/g, convert); 
     function convert(){ 
return arguments[0].toUpperCase(); 
     } 
$('title').text(str); 

muszę dodawać pewne wyjątki od tej, takich jak „i”.

Z góry dziękuję.

+0

Jakie jest Twoje pytanie? proszę wyjaśnić to? – chhameed

+0

Możesz uzyskać i ustawić tytuł bezpośrednio. Nie ma tam prawdziwej potrzeby jQuery. 'str = document.title; document.title = str; ' – user113716

Odpowiedz

7

Można zbudować Array wyjątków i sprawdzić, czy dopasowany ciąg pasuje do siebie.

Jeśli tak, po prostu zwróć go , tak jak.

var str = document.title, 
    exceptions = ['hello', 'and', 'etc']; 

str = str.toLowerCase().replace(/\b([a-z])\w*\b/g, convert); 

function convert(word, firstChar) { 
    if ($.inArray(word, exceptions) != -1) { 
     return word; 
    } 
    return firstChar.toUpperCase() + word.substr(1); 
} 

document.title = str; 

jsFiddle.

+0

pobili mnie do tego loool :) +1 – Val

+0

Powinieneś zmienić test' $ .inArray' na '> -1' lub coś podobnego od' -1', co daje wynik, gdy nie pasuje jest znalezione. (Może być dopasowanie na indeks '0'). : o) – user113716

+0

Cześć Alex, dzięki za to. Ale czy nie jest prostszy sposób z .not lub przy użyciu selektora filtrów? – Paul

0

Można również użyć selektora CSS:

.toUpperCase:first-letter { text-transform:uppercase }

a następnie

<div class="toUpperCase">text</div>

+0

Nie działa pod adresem Foo .. – Paul

+0

Nie bierze pod uwagę wyjątków. – alex

+0

Oczywiście, głównie brałem pod uwagę fakt, że jeśli był to element div lub jakikolwiek inny element, można było zrobić wielkie litery bez części regex, ale po prostu dodając klasę na tym elemencie. – ebany

Powiązane problemy