4 Stimmen

Wie kann ich in JavaScript Namen in Großbuchstaben umwandeln?

Ich habe mich umgesehen, wie man mit JavaScript Namen in die korrekte Groß- und Kleinschreibung umwandeln kann, z. B. würde aus George Mchall George McHall werden. Ich war in der Lage, ein Schreiben auf Codeproject zu finden, wie dies zu tun, sowie eine Person, die es beabsichtigt, dies zu tun:

function toProperCase(s){
    return s.toLowerCase().replace( /\b((m)(a?c))?(\w)/g,
    function($1, $2, $3, $4, $5) {
  if($2){
   return $3.toUpperCase()+$4+$5.toUpperCase();
  } 
  return $1.toUpperCase(); 
 });
}

Dies ermöglicht das, was ich suche. Aber ich muss in der Lage sein, es weiter zu erweitern und zusätzliche Fälle hinzuzufügen.

Ich fand eine weitere Seite auf der Website von John Gruber für Titel, aber ich möchte nur die Namen bearbeiten.

Hat jemand eine Idee, wie man sie erweitern kann? Ich bin wirklich nur auf der Suche nach einem Punkt in die richtige Richtung.

Bearbeiten: Da ich hier auf eine Mauer zu stoßen scheine, hat vielleicht jemand eine Möglichkeit, dies serverseitig zu tun. Dies ist zumindest für jetzt mit ColdFusion für die Server-Seite. Ich habe eine C#-Implementierung gesehen, aber ich bin nicht in der Lage, zu C# im Moment zu bewegen.

6voto

jondoig Punkte 111

Ich habe ein paar Antworten aus ähnlichen Beiträgen zusammengefasst:

function properName(name) {
  return ("" + name.replace(/[^\s\-\']+[\s\-\']*/g, function (word) {
    return word.charAt(0).toUpperCase() + word.substr(1).toLowerCase();
  }).replace(/\b(Van|De|Der|Da|Von)\b/g, function (nobiliaryParticle) {
    return nobiliaryParticle.toLowerCase();
  }).replace(/Mc(.)/g, function (match, letter3) {
    return 'Mc' + letter3.toUpperCase();
  }));
}

Dabei wird der Buchstabe nach "Mc" willkürlich großgeschrieben, aber nicht nach "Mac", und Namen wie LaSalle oder terHorst werden nicht berücksichtigt (weil ich sie nicht brauchte).

Hier ist ein JSFiddle (unter Verwendung der Kandidaten für Grayndler bei den australischen Bundeswahlen 2016).

3voto

Nathan MacInnes Punkte 10845

Wie wäre es damit:

if (str==str.toLowerCase() || str==str.toUpperCase())
  str = str.toTitleCase();

Ansonsten lassen Sie es gut sein!!!

Bearbeiten: Sie könnten die Zeichenfolge optional aufteilen, um Leute auszusortieren, die die Umschalttaste zu lange gedrückt halten, wie SMith.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X