2012-07-06 11 views
5

Questo è il titolo della mia pagina:Capitalizzare parole frontespizio fino trattino

<title>john smith - Site and site - jobs</title> 

devo a capitalizzare il titolo della pagina fino alla prima hifen (-). Questo è il mio codice, ma ho perso la seconda parte e il primo trattino.

function toTitleCase(str){ 
    var str = document.title; 
    subTitle = str.split('-')[0]; 
    return str.substring(0,str.indexOf('-')).replace(/\w\S*/g, function(txt){ 
     return txt.charAt(0).toUpperCase() + txt.substring(1); 
    }); 
} 
document.title = toTitleCase(document.title); 
+1

Perché passando il parametro _str_ alla funzione se sovrascrivere nella riga 1 della tua funzione comunque? – Chris

+1

@roybatty Qual è l'output corretto per voi-> 'JOHN SMITH', o' John Smith'? Cosa intendi con "capitalizzare"? – Engineer

+0

Capitalizza ordinariamente significa la prima lettera, non tutto, che è la comprensione su cui ho basato la mia risposta quindi spero che questo sia ciò che intendeva – Utkanos

risposta

1
function toTitleCase(str){ 
    str = str.split('-'); 
    str[0]=str[0].replace(/\w\S*/g, function(txt){return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();}); 
    return str.join("-"); 
    } 
document.title = toTitleCase(document.title); 
+0

Farai 'JOHN SMITH', non' John Smith' – Engineer

+0

Verifica quindi commento –

+0

e la sua domanda riguardava la seconda parte persa – epoch

0

risposte riassuntive "best of" + il mio granello di sale:

String.prototype.capitalize = function() { 
    return this.replace(/\b[a-z]/g, function ($0) { return $0.toUpperCase(); }); 
}; 

function capitalizeTitle() 
{ 
    document.title = document.title.replace(/^[^\-]*/, function($0) { 
    return $0.capitalize(); 
    }); 
} 

capitalizeTitle(); 
1

sempre bene di gettare in un percorso REGEX nucleare ...

var str = "some words - are - here"; 
console.log("this is - a - string".replace(/^[^\-]*/, function($0) { 
    return $0.replace(/\b[a-z]/g, function($0) { return $0.toUpperCase(); }); 
})); 

Uscite:

"Some Words - are - here" 
+0

Nice. Tuttavia '/^[^ \ -] */g' sembra essere sufficiente per la prima espressione regolare. –

+0

Ah sì, certo. Ho lasciato lo sguardo avanti per errore da un precedente tentativo. Grazie per il testa a testa. – Utkanos

0

Questo codice ti aiuterà.

function toTitleCase(str) { 
     subTitle = str.split('-')[0].capitalize(); 
     return subTitle + str.substring(subTitle.length); 
    } 

    String.prototype.capitalize = function() { 
     return this.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); }); 
    } 
0

Hey provare questo per favore: http://jsfiddle.net/LK3Vd/

fammi sapere se ho perso qualcosa.

Spero che questo aiuti :)

codice

var str = $('#foo').html(); 
str = str.substring(0, str.indexOf('-')); 

str = str.toLowerCase().replace(/\b[a-z]/g, function(letter) { 
    return letter.toUpperCase(); 
}); 
0

Questo potrebbe aiutare ..

function ok() 
{ 
    var str = document.title; 
    document.title=str.substring(0, str.indexOf('-')).toUpperCase()+str.substring(str.indexOf('-'),str.length); 

}

Problemi correlati