2011-07-04 18 views
5

Tengo el siguiente código adaptado a partir de una pregunta/respuesta:¿Primera letra del mayúscula de Javascript/jQuery con algunas excepciones?

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

tengo que añadir algunas excepciones a esta como la 'y'.

Gracias de antemano.

+0

¿cuál es tu pregunta? por favor aclararlo? – chhameed

+0

Puede obtener y establecer el título directamente. No hay necesidad real de jQuery allí. 'str = document.title; document.title = str; ' – user113716

Respuesta

7

Puede crear un Array de las excepciones y comprobar si la cadena coincidente coincide.

En caso afirmativo, solo devuelva como.

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

me gano loool :) +1 – Val

+0

Debes cambiar la prueba' $ .inArray' a '> -1' o algo similar ya que' -1' es el resultado que da cuando no hay coincidencia es encontrado. (Podría haber una coincidencia en el índice '0'). : o) – user113716

+0

Hola Alex, gracias por eso. ¿Pero no hay una manera más simple con .no usar un selector de filtro? – Paul

0

También es posible usar selector CSS:

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

y luego

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

+0

No funcionará en Foo .. – Paul

+0

Esto no considera las excepciones. – alex

+0

Claro, principalmente estaba considerando el hecho de que si fuera un elemento div o cualquier otro elemento, podría tener la mayúscula sin la parte de expresiones regulares pero simplemente agregando una clase en ese elemento. – ebany

Cuestiones relacionadas