Hoe de eerste letter van elk woord met een hoofdletter te schrijven, zoals een stad met twee woorden?

Mijn JS werkt goed als de stad één woord heeft:

  • cHIcaGO ==> Chicago

Maar als het zover is

  • san diego ==> San Diego

Hoe zorg ik ervoor dat het San Diego wordt?

function convert_case() {
    document.profile_form.city.value =
        document.profile_form.city.value.substr(0,1).toUpperCase() + 
        document.profile_form.city.value.substr(1).toLowerCase();
}

Antwoord 1, autoriteit 100%

Er is hiereen goed antwoord:

function toTitleCase(str) {
    return str.replace(/\w\S*/g, function(txt){
        return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
    });
}

of in ES6:

var text = "foo bar loo zoo moo";
text = text.toLowerCase()
    .split(' ')
    .map((s) => s.charAt(0).toUpperCase() + s.substring(1))
    .join(' ');

Antwoord 2, autoriteit 21%

U kunt CSS gebruiken:

p.capitalize {text-transform:capitalize;}

Update (JS-oplossing):

Gebaseerd op de opmerking van Kamal Reddy:

document.getElementById("myP").style.textTransform = "capitalize";

Antwoord 3, autoriteit 4%

function convertCase(str) {
  var lower = String(str).toLowerCase();
  return lower.replace(/(^| )(\w)/g, function(x) {
    return x.toUpperCase();
  });
}

Antwoord 4, autoriteit 2%

De JavaScript-functie:

String.prototype.capitalize = function(){
       return this.replace( /(^|\s)([a-z])/g , function(m,p1,p2){ return p1+p2.toUpperCase(); } );
      };

Om deze functie te gebruiken:

capitalizedString = someString.toLowerCase().capitalize();

Dit zou ook werken op een reeks met meerdere woorden.

Om ervoor te zorgen dat de geconverteerde plaatsnaam in de database wordt geïnjecteerd, in kleine letters en met een hoofdletter, moet u JavaScript gebruiken voordat u deze naar de server verzendt. CSS maakt eenvoudig stijlen, maar de daadwerkelijke gegevens blijven vooraf gestyled. Bekijk dit jsfiddle-voorbeeld en vergelijk het waarschuwingsbericht met de gestileerde uitvoer.

Other episodes