JavaScript-Zeichenfolge in Kleinbuchstaben umwandeln?

1289

Wie kann ich einen JavaScript-Zeichenfolgenwert in Kleinbuchstaben umwandeln?

Beispiel: "Ihr Name" bis "Ihr Name"

Derek
quelle

Antworten:

1682
var lowerCaseName = "Your Name".toLowerCase();
John Topley
quelle
27
Beachten Sie auch, dass "toLowerCase den Wert der Zeichenfolge str selbst nicht beeinflusst". Dies basiert auf einer Dokumentation hier developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Cary Bondoc
Was ist die zeitliche und räumliche Komplexität der toLowerCase()Funktion?
Ramzan Chasygov
7
@RamzanChasygov Es ist sowohl O (n) als auch schneller als die Neuimplementierung in JavaScript, es sei denn, Sie haben eine JavaScript-Engine, die von sehr intelligenten Idioten programmiert wurde.
wizzwizz4
1
Ein sicherer Weg, toLowerCase()Variablen aufzurufen , wäre (varName || '').toLowerCase();
Dinesh Pandiyan
413

Verwenden Sie entweder die Methoden toLowerCase oder toLocaleLowerCase des String- Objekts. Der Unterschied besteht darin, dass toLocaleLowerCasedas aktuelle Gebietsschema des Benutzers / Hosts berücksichtigt wird. Gemäß § 15.5.4.17 der ECMAScript - Sprachspezifikation (ECMA-262) , toLocaleLowerCase...

… Funktioniert genauso wie toLowerCase, außer dass das Ergebnis das richtige Ergebnis für das aktuelle Gebietsschema der Host-Umgebung liefern soll und nicht ein vom Gebietsschema unabhängiges Ergebnis. Es wird nur in den wenigen Fällen (z. B. Türkisch) einen Unterschied geben, in denen die Regeln für diese Sprache im Widerspruch zu den regulären Unicode-Fallzuordnungen stehen.

Beispiel:

var lower = 'Your Name'.toLowerCase();

Beachten Sie auch, dass die Funktionen toLowerCaseund toLocaleLowerCaseimplementiert sind, um generisch mit jedem Werttyp zu arbeiten . Daher können Sie diese Funktionen auch für Nicht- StringObjekte aufrufen . Dies bedeutet eine automatische Konvertierung in einen Zeichenfolgenwert, bevor die Groß- und Kleinschreibung jedes Zeichens im resultierenden Zeichenfolgenwert geändert wird. Sie können sich beispielsweise toLowerCase direkt an einem Datum wie dem folgenden bewerben :

var lower = String.prototype.toLowerCase.apply(new Date());

und was effektiv gleichbedeutend ist mit:

var lower = new Date().toString().toLowerCase();

Die zweite Form wird im Allgemeinen wegen ihrer Einfachheit und Lesbarkeit bevorzugt. In früheren Versionen von IE hatte die erste den Vorteil, dass sie mit einem nullWert arbeiten konnte. Das Ergebnis der Anwendung toLowerCaseoder toLocaleLowerCaseauf nullwürde ergeben null(und keine Fehlerbedingung).

Atif Aziz
quelle
22
+1, diese Antwort verdient weit mehr Stimmen als die akzeptierte Antwort, die überhaupt nichts erklärt, ich meine es
Frederik.L
Der Teil über die String.prototype.toLowerCase.apply(null)Rückgabe nullscheint nicht korrekt zu sein. Es löst eine TypeErrorAusnahme aus, wenn ich es versuche.
JohnnyHK
2
@ JohnnyHK Du hast recht. Dieses Bit galt früher für frühere IE-Versionen, in denen es zum Zeitpunkt der ursprünglichen Veröffentlichung der Antwort getestet wurde. Ich habe die Antwort aktualisiert, um Ihr Feedback widerzuspiegeln. Vielen Dank.
Atif Aziz
29

Ja, jede Zeichenfolge in JavaScript verfügt über eine toLowerCase()Methode, die eine neue Zeichenfolge zurückgibt, die in Kleinbuchstaben die alte Zeichenfolge ist. Die alte Zeichenfolge bleibt unverändert.

Sie können also Folgendes tun:

"Foo".toLowerCase();
document.getElementById('myField').value.toLowerCase();
pkaeding
quelle
20

Funktionen von toLocaleUpperCase () oder Kleinbuchstaben verhalten sich nicht so, wie sie sollten.

In meinem System Safari 4, Chrome 4 Beta und Firefox 3.5.x werden beispielsweise Zeichenfolgen mit türkischen Zeichen falsch konvertiert.

Die Browser antworten auf navigator.language als "en-US", "tr" bzw. "en-US".

Es gibt jedoch keine Möglichkeit, die Accept-Lang-Einstellung des Benutzers im Browser abzurufen, soweit ich sie finden konnte.

Nur Chrome gibt mir Probleme, obwohl ich jeden Browser als bevorzugtes tr-TR-Gebietsschema konfiguriert habe.

Ich denke, diese Einstellungen wirken sich nur auf den HTTP-Header aus, aber wir können nicht über JS auf diese Einstellungen zugreifen.

In der Mozilla-Dokumentation heißt es: "Die Zeichen in einer Zeichenfolge werden unter Berücksichtigung des aktuellen Gebietsschemas in ... konvertiert.

Für die meisten Sprachen wird dasselbe zurückgegeben wie ... ".

Ich denke, es ist gültig für Türkisch, es unterscheidet sich nicht, es ist als en oder tr konfiguriert.

Auf Türkisch sollte "DİNÇ" in "dinç" und "DINÇ" in "dınç" konvertiert werden oder umgekehrt.

Sanilunlu
quelle
Accept-Languageund navigator.languagesind zwei völlig getrennte Einstellungen. Accept-Languagespiegelt die vom Benutzer gewählten Einstellungen für die Sprachen wider, die er auf Webseiten erhalten möchte (und auf diese Einstellung kann JS leider nicht zugreifen). navigator.languageGibt lediglich an, welche Lokalisierung des Webbrowsers installiert wurde, und sollte im Allgemeinen für nichts verwendet werden. Diese beiden Werte hängen nicht mit dem Systemgebietsschema zusammen. Dies ist das Bit, das entscheidet, was zu toLocaleLowerCase()tun ist. Dies ist eine Einstellung auf Betriebssystemebene, die außerhalb des Bereichs der Einstellungen des Browsers liegt.
Bobince
Ich dachte, Accept-Language und navigator.language sollten irgendwie verwandt sein. Sie können die Standardsprache in der Reihenfolge über die Einstellungsbildschirme des Browsers konfigurieren, können jedoch nicht konfigurieren, wie navigator.language reagieren soll. Ich denke, es sollte eine andere Form der Funktion toLowerCase () geben, die einen Gebietsschema-Parameter erhält.
Sanilunlu
Ja, das sollte es wirklich. Leider sind länderbezogene Funktionen in JavaScript schwach, schlecht spezifiziert und im Allgemeinen unzuverlässig.
Bobince
15

Nur ein Beispiel für toLowerCase(), toUpperCase()und Prototyp für noch nicht verfügbar toTitleCase()odertoPropperCase()

String.prototype.toTitleCase = function() {
  return this.split(' ').map(i => i[0].toUpperCase() + i.substring(1).toLowerCase()).join(' ');
}

String.prototype.toPropperCase = function() {
  return this.toTitleCase();
}

var OriginalCase = 'Your Name';
var lowercase = OriginalCase.toLowerCase();
var upperCase = lowercase.toUpperCase();
var titleCase = upperCase.toTitleCase();

console.log('Original: ' + OriginalCase);
console.log('toLowerCase(): ' + lowercase);
console.log('toUpperCase(): ' + upperCase);
console.log('toTitleCase(): ' + titleCase);

bearbeitet 2018

ewwink
quelle
1
toPropperCasesollte seintoProperCase
Ian
-1 Dieser Code ist sehr fehleranfällig bei allen Nicht-ASCII-Codes. Mit der deutschen Eingabe "die straße" erhalten Sie beispielsweise "Die Straße" als Titelfall. Richtig wäre "Die Straße". Abgesehen davon ist die Verschmutzung von Prototypen heutzutage verpönt.
ComFreek
13

Ich zahlte Aufmerksamkeit , dass viele Menschen suchen für strtolower()in JavaScript. Sie erwarten den gleichen Funktionsnamen wie in anderen Sprachen, deshalb ist dieser Beitrag hier.

Ich würde empfehlen, die native Javascript-Funktion zu verwenden

"SomE StriNg".toLowerCase()

Hier ist die Funktion, die sich genauso verhält wie die von PHP (für diejenigen, die PHP-Code in js portieren).

function strToLower (str) {
    return String(str).toLowerCase();
}
Dan
quelle
Wofür ist das + ''?
UpTheCreek
8

Beachten Sie, dass die Funktion NUR für STRING-Objekte funktioniert.

Zum Beispiel habe ich ein Plugin verbraucht und war verwirrt, warum ich den JS-Fehler "extension.tolowercase is not function" erhielt.

 onChange: function(file, extension)
    {
      alert("extension.toLowerCase()=>" + extension.toLowerCase() + "<=");

Was den Fehler "extension.toLowerCase ist keine Funktion" verursachte Also habe ich diesen Code ausprobiert, der das Problem enthüllte!

alert("(typeof extension)=>" + (typeof extension) + "<=");;

Die Ausgabe war "(Typ der Erweiterung) => Objekt <=" - also AhHa, ich habe KEINE Zeichenfolge var für meine Eingabe erhalten. Die Lösung ist jedoch unkompliziert - zwingen Sie das verdammte Ding einfach in einen String!:

var extension = String(extension);

Nach der Umwandlung funktionierte die Funktion extension.toLowerCase () einwandfrei.

Paul Gorbas
quelle
8

Methode oder Funktion: toLowerCase (), toUpperCase ()

Beschreibung: Diese Methoden werden verwendet, um eine Zeichenfolge oder ein Alphabet von Klein- zu Großbuchstaben oder umgekehrt abzudecken. zB: "und" zu "UND".

Konvertieren in Großbuchstaben: - Beispielcode: -

<script language=javascript>
var ss = " testing case conversion method ";
var result = ss.toUpperCase();
document.write(result);
</script>

Ergebnis: PRÜFVERFAHREN FÜR DIE FALLKONVERTIERUNG

Konvertieren in Kleinbuchstaben: - Beispielcode:

<script language=javascript>
var ss = " TESTING LOWERCASE CONVERT FUNCTION ";
var result = ss.toLowerCase();
document.write(result);
</script>

Ergebnis: Testen der Konvertierungsfunktion für Kleinbuchstaben

Erläuterung: In den obigen Beispielen

toUpperCase() method converts any string to "UPPER" case letters.
toLowerCase() method converts any string to "lower" case letters.
Jack Sparrow
quelle
3

Verwenden Sie einfach JS toLowerCase()
let v = "Your Name" let u = v.toLowerCase();oder
let u = "Your Name".toLowerCase();

Harunur Rashid
quelle
2

Opt 1: Verwenden von toLowerCase ();

var x = "ABC";
x=x.toLowerCase();

Opt 2: Verwenden Sie Ihre eigene Funktion

 function convertToLowerCase(str) {
      var result = ''

      for (var i = 0; i < str.length; i++) {
        var code = str.charCodeAt(i)
        if (code > 64 && code < 91) {
          result += String.fromCharCode(code + 32)
        } else {
          result += str.charAt(i)
        }
      }
      return result
    }

Nennen Sie es als:

x= convertToLowerCase(x);
Siddhartha
quelle
Die erste Option wurde bereits in anderen Antworten erwähnt, die zweite Option schlägt für alles, was nicht ASCII ist, schlecht fehl.
ComFreek
-1

Tablett diesen kurzen Weg

  document.write((a+"").toUpperCase());
Abdurahman Popal
quelle
-1

Falls Sie es selbst bauen möchten:

function toLowerCase(string) {

let lowerCaseString = "";

for (let i = 0; i < string.length; i++) {
    //find ASCII charcode
    let charcode = string.charCodeAt(i);

    //if uppercase
    if (charcode > 64 && charcode < 97){
        //convert to lowercase
        charcode = charcode + 32
    }

    //back to char
    let lowercase = String.fromCharCode(charcode);

    //append
    lowerCaseString = lowerCaseString.concat(lowercase);
}

return lowerCaseString

}}

Javier Giovannini
quelle
-2

Sie können die integrierte Methode .toLowerCase () für Javascript-Zeichenfolgen verwenden. Beispiel: var x = "Hallo"; x.toLowerCase ();

Praveen
quelle
1
Dies ist identisch mit der akzeptierten Antwort minus gute Code-Formatierung
Reggaeguitar
-4

Versuchen

<input type="text" style="text-transform: uppercase">  //uppercase
<input type="text" style="text-transform: lowercase">  //lowercase

Demo - JSFiddle

Ein Java-Typ
quelle
7
Schön, aber nicht besonders javascriptisch, nein?
einige-
Aufbauend auf den Aussagen von @ some-non-description-user sucht das OP nach einer JavaScript-Lösung. Obwohl diese Antwort gültig ist, beantwortet sie nicht die Frage des OP gemäß den definierten Parametern.
Boxspah
Schön ... Ich suchte nach einer CSS-Methode und kam zu dieser Seite
Abhishek Nalin