Convertire la stringa JavaScript in minuscolo?


1290

Come posso convertire un valore di stringa JavaScript in tutte le lettere minuscole?

Esempio: "Il tuo nome" per "il tuo nome"

Risposte:


1682
var lowerCaseName = "Your Name".toLowerCase();

27
Considera anche questo, "toLowerCase non influisce sul valore della stringa str stessa". Questo è basato su una documentazione qui developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Cary Bondoc,

qual è la complessità della toLowerCase()funzione tempo e spazio ?
Ramzan Chasygov

7
@RamzanChasygov È sia O (n) sia più veloce che reimplementarlo in JavaScript, a meno che tu non abbia un motore JavaScript programmato da idioti molto intelligenti.
wizzwizz4,

1
Un modo più sicuro per invocare le toLowerCase()variabili sarebbe (varName || '').toLowerCase();
Dinesh Pandiyan,

413

Utilizzare i metodi toLowerCase o toLocaleLowerCase dell'oggetto String . La differenza è che toLocaleLowerCaseterrà conto delle impostazioni internazionali correnti dell'utente / host. Secondo il § 15.5.4.17 della specifica della lingua ECMAScript (ECMA-262) , toLocaleLowerCase...

... funziona esattamente come toLowerCase, tranne per il fatto che il suo risultato è destinato a produrre il risultato corretto per la locale corrente dell'ambiente host, piuttosto che un risultato indipendente dalla locale. Ci sarà solo una differenza nei pochi casi (come il turco) in cui le regole per quella lingua sono in conflitto con i normali mapping dei casi Unicode.

Esempio:

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

Si noti inoltre che le funzioni toLowerCasee toLocaleLowerCasesono implementate per funzionare genericamente su qualsiasi tipo di valore. Pertanto è possibile richiamare queste funzioni anche su non Stringoggetti. Ciò implica la conversione automatica in un valore di stringa prima di modificare il caso di ciascun carattere nel valore di stringa risultante. Ad esempio, puoi applicare toLowerCase direttamente in una data come questa:

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

e che è effettivamente equivalente a:

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

La seconda forma è generalmente preferita per la sua semplicità e leggibilità. Nelle versioni precedenti di IE, la prima aveva il vantaggio di poter funzionare con un nullvalore. Il risultato dell'applicazione toLowerCaseo toLocaleLowerCasesul nullprodurrebbe null(e non una condizione di errore).


22
+1, questa risposta merita molti più voti rispetto alla risposta accettata che non spiega nulla, intendo dire
Frederik.L

La parte relativa al String.prototype.toLowerCase.apply(null)ritorno nullnon sembra essere corretta. Genera TypeErrorun'eccezione quando lo provo.
JohnnyHK,

2
@JohnnyHK Hai ragione. Quel bit era valido per le versioni precedenti di IE in cui era stato testato al momento della pubblicazione della risposta. Ho aggiornato la risposta per riflettere il tuo feedback. Grazie.
Atif Aziz,

29

Sì, qualsiasi stringa in JavaScript ha un toLowerCase()metodo che restituirà una nuova stringa che è la vecchia stringa in tutte le lettere minuscole. La vecchia stringa rimarrà invariata.

Quindi, puoi fare qualcosa del tipo:

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

20

Le funzioni toLocaleUpperCase () o minuscole non si comportano come dovrebbero.

Ad esempio nel mio sistema Safari 4, Chrome 4 Beta, Firefox 3.5.x converte le stringhe con caratteri turchi in modo errato.

I browser rispondono a navigator.language rispettivamente come "en-US", "tr", "en-US".

Ma non c'è modo di ottenere l'impostazione Accept-Lang dell'utente nel browser per quanto ho potuto trovare.

Solo Chrome mi dà problemi, anche se ho configurato tutti i browser come impostazioni locali tr-TR preferite.

Penso che queste impostazioni influiscano solo sull'intestazione HTTP, ma non possiamo accedere a queste impostazioni tramite JS.

Nella documentazione di Mozilla dice "I caratteri all'interno di una stringa vengono convertiti in ... rispettando le impostazioni internazionali correnti.

Per la maggior parte delle lingue, questo restituirà lo stesso di ... ".

Penso che sia valido per il turco, non differisce è configurato come en o tr.

In turco dovrebbe convertire "DİNÇ" in "dinç" e "DINÇ" in "dınç" o viceversa.


Accept-Languagee navigator.languagesono due impostazioni completamente separate. Accept-Languageriflette le preferenze scelte dall'utente per quali lingue desiderano ricevere nelle pagine Web (e questa impostazione è sfortunatamente inaccessibile a JS). navigator.languageriflette semplicemente la localizzazione del browser Web installata e in genere non deve essere utilizzata per nulla. Entrambi questi valori non sono correlati alla locale del sistema, che è il bit che decide cosa toLocaleLowerCase()farà; questa è un'impostazione a livello di sistema operativo che esula dalle preferenze del browser.
bobince,

Ho pensato che Accept-Language e navigator.language dovessero essere in qualche modo correlati. È possibile configurare la lingua predefinita in ordine tramite le schermate delle impostazioni del browser, ma non è possibile configurare la risposta di navigator.language. Penso che dovrebbe esserci un'altra forma della funzione toLowerCase () che ottiene un parametro locale.
sanilunlu,

Sì, ci dovrebbe davvero. Purtroppo le funzionalità relative alle impostazioni locali in JavaScript sono deboli, scarsamente specificate e generalmente inaffidabili.
Bobince,

15

Solo un esempio per toLowerCase(), toUpperCase()e prototipi per la non ancora disponibile toTitleCase()otoPropperCase()

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);

modificato 2018


1
toPropperCasedovrebbe esseretoProperCase
Ian

-1 questo codice è molto soggetto a errori con tutto ciò che non è ASCII. Ad esempio, con l'ingresso tedesco "die straße", otterrai "Die Strasse" come custodia del titolo. Corretto sarebbe "Die Straße". A parte questo, l'inquinamento da prototipo è oggi disapprovato.
ComFreek,

13

Ho pagato l'attenzione che molte persone sono alla ricerca perstrtolower() in JavaScript. Si aspettano lo stesso nome di funzione come in altre lingue, ecco perché questo post è qui.

Consiglierei di usare la funzione Javascript nativa

"SomE StriNg".toLowerCase()

Ecco la funzione che si comporta esattamente come quella di PHP (per coloro che stanno trasferendo il codice PHP in js)

function strToLower (str) {
    return String(str).toLowerCase();
}

A cosa serve + ''?
UpTheCreek

8

Nota che la funzione funzionerà SOLO su oggetti STRING.

Ad esempio, stavo consumando un plugin ed ero confuso perché stavo ottenendo un errore JS "extension.tolowercase non è una funzione".

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

Che ha prodotto l'errore "extension.toLowerCase non è una funzione" Quindi ho provato questo pezzo di codice, che ha rivelato il problema!

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

L'output era "(typeof extension) => object <=" - quindi AhHa, NON stavo ottenendo una stringa var per il mio input. Tuttavia, la correzione è semplice: basta forzare la cosa maledetta in una stringa !:

var extension = String(extension);

Dopo il cast, la funzione extension.toLowerCase () ha funzionato bene.


8

Metodo o funzione: toLowerCase (), toUpperCase ()

Descrizione: questi metodi vengono utilizzati per coprire una stringa o un alfabeto da lettere minuscole a lettere maiuscole o viceversa. ad esempio: "e" a "AND".

Conversione in maiuscolo: - Codice di esempio: -

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

Risultato: METODO DI CONVERSIONE DEL CASO DI PROVA

Conversione in minuscolo: - Codice di esempio:

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

Risultato: test della funzione di conversione minuscola

Spiegazione: Negli esempi precedenti,

toUpperCase() method converts any string to "UPPER" case letters.
toLowerCase() method converts any string to "lower" case letters.

3

Basta usare JS toLowerCase()
let v = "Your Name" let u = v.toLowerCase();o
let u = "Your Name".toLowerCase();


2

Opzione 1: utilizzo di toLowerCase ();

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

Opzione 2: utilizzo della propria funzione

 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
    }

Chiamalo come:

x= convertToLowerCase(x);

La prima opzione è già stata menzionata in altre risposte, la seconda opzione fallisce male per tutto ciò che non è ASCII.
ComFreek,


-1

Nel caso tu voglia costruirlo da solo:

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

}


-2

puoi usare il metodo .toLowerCase () incorporato nelle stringhe javascript. es: var x = "Ciao"; x.toLowerCase ();


1
Questo è identico alla risposta accettata meno una buona formattazione del codice
reggaeguitar

-4

Provare

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

Demo - JSFiddle


7
Bello, ma non particolarmente javascript, no?
un utente non descrittivo

Basandosi su ciò che ha detto @ un utente non descrittivo, l'OP sta cercando una soluzione JavaScript. Sebbene questa risposta sia valida, non risponde alla domanda del PO secondo i parametri definiti.
boxspah,

Bello ... stavo cercando un metodo CSS e sono arrivato a questa pagina
Abhishek Nalin
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.