Convertir la chaîne JavaScript en minuscules?

1290

Comment convertir une valeur de chaîne JavaScript en toutes lettres minuscules?

Exemple: "Votre nom" à "votre nom"

Derek
la source

Réponses:

1682
var lowerCaseName = "Your Name".toLowerCase();
John Topley
la source
27
Considérez ceci également, "toLowerCase n'affecte pas la valeur de la chaîne str elle-même". Ceci est basé sur une documentation ici developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Cary Bondoc
quelle est la complexité temporelle et spatiale de la toLowerCase()fonction?
Ramzan Chasygov
7
@RamzanChasygov C'est à la fois O (n) et plus rapide que de le réimplémenter en JavaScript, sauf si vous avez un moteur JavaScript programmé par des idiots très intelligents.
wizzwizz4
1
Un moyen plus sûr d'invoquer des toLowerCase()variables serait (varName || '').toLowerCase();
Dinesh Pandiyan
413

Utilisez les méthodes toLowerCase ou toLocaleLowerCase de l' objet String . La différence est que toLocaleLowerCaseles paramètres régionaux actuels de l'utilisateur / hôte seront pris en compte. Conformément au § 15.5.4.17 de la spécification du langage ECMAScript (ECMA-262) , toLocaleLowerCase

… Fonctionne exactement de la même manière que toLowerCase, sauf que son résultat est destiné à fournir le résultat correct pour les paramètres régionaux actuels de l'environnement hôte, plutôt qu'un résultat indépendant des paramètres régionaux. Il n'y aura de différence que dans les quelques cas (comme le turc) où les règles de cette langue entrent en conflit avec les mappages de cas Unicode standard.

Exemple:

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

Notez également que les fonctions toLowerCaseet toLocaleLowerCasesont implémentées pour fonctionner de manière générique sur tout type de valeur. Vous pouvez donc invoquer ces fonctions même sur des non- Stringobjets. Cela impliquera une conversion automatique en une valeur de chaîne avant de modifier la casse de chaque caractère dans la valeur de chaîne résultante. Par exemple, vous pouvez postuler toLowerCase directement à une date comme celle-ci:

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

et qui équivaut effectivement à:

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

La deuxième forme est généralement préférée pour sa simplicité et sa lisibilité. Sur les versions antérieures d'IE, la première avait l'avantage de pouvoir fonctionner avec une nullvaleur. Le résultat de l'application toLowerCaseou toLocaleLowerCasesur nulldonnerait null(et non une condition d'erreur).

Atif Aziz
la source
22
+1, cette réponse mérite bien plus de votes que la réponse acceptée qui n'explique rien du tout, je le pense
Frederik.L
La partie concernant le String.prototype.toLowerCase.apply(null)retour nullne semble pas être correcte. Il jette une TypeErrorexception lorsque je l'essaye.
JohnnyHK
2
@JohnnyHK Vous avez raison. Ce bit était utilisé pour les versions antérieures d'IE où il était testé au moment où la réponse a été initialement publiée. J'ai mis à jour la réponse pour refléter vos commentaires. Merci.
Atif Aziz
29

Oui, toute chaîne en JavaScript a une toLowerCase()méthode qui retournera une nouvelle chaîne qui est l'ancienne chaîne en minuscules. L'ancienne chaîne restera inchangée.

Vous pouvez donc faire quelque chose comme:

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

Les fonctions toLocaleUpperCase () ou minuscules ne se comportent pas comme elles devraient le faire.

Par exemple, dans mon système, Safari 4, Chrome 4 Beta, Firefox 3.5.x, il ne convertit pas correctement les chaînes avec des caractères turcs.

Les navigateurs répondent à navigator.language comme "en-US", "tr", "en-US" respectivement.

Mais il n'y a aucun moyen d'obtenir le paramètre Accept-Lang de l'utilisateur dans le navigateur pour autant que je puisse trouver.

Seul Chrome me pose problème, même si j'ai configuré chaque navigateur en tant que paramètre régional tr-TR préféré.

Je pense que ces paramètres n'affectent que l'en-tête HTTP, mais nous ne pouvons pas accéder à ces paramètres via JS.

Dans la documentation de Mozilla, il est écrit "Les caractères d'une chaîne sont convertis en ... tout en respectant les paramètres régionaux actuels.

Pour la plupart des langues, cela renvoie la même chose que ... ".

Je pense que c'est valable pour le turc, il ne diffère pas, il est configuré comme en ou tr.

En turc, il devrait convertir "DİNÇ" en "dinç" et "DINÇ" en "dınç" ou vice-versa.

sanilunlu
la source
Accept-Languageet navigator.languagesont deux paramètres complètement distincts. Accept-Languagereflète les préférences choisies par l'utilisateur pour les langues qu'il souhaite recevoir dans les pages Web (et ce paramètre est malheureusement inaccessible à JS). navigator.languagereflète simplement la localisation du navigateur Web qui a été installée et ne doit généralement pas être utilisée pour quoi que ce soit. Ces deux valeurs ne sont pas liées aux paramètres régionaux du système, qui est le bit qui décide de ce qui toLocaleLowerCase()va faire; c'est un paramètre au niveau du système d'exploitation hors de la portée des préférences du navigateur.
bobince
Je pensais qu'Accept-Language et navigator.language devraient être en quelque sorte liés. Vous pouvez configurer la langue par défaut dans l'ordre via les écrans de paramètres des navigateurs, mais vous ne pouvez donc pas configurer ce que navigator.language doit répondre. Je pense qu'il devrait y avoir une autre forme de la fonction toLowerCase () qui obtient un paramètre local.
sanilunlu
Oui, il devrait vraiment y en avoir. Malheureusement, les fonctionnalités liées aux paramètres régionaux dans JavaScript sont faibles, mal spécifiées et généralement peu fiables.
bobince
15

Juste un exemple pour toLowerCase(), toUpperCase()et un prototype pour pas encore disponible toTitleCase()outoPropperCase()

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

édité 2018

ewwink
la source
1
toPropperCasedevrait êtretoProperCase
Ian
-1 ce code est très sujet aux erreurs avec tout ce qui n'est pas ASCII. Par exemple, avec l'entrée allemande "die straße", vous obtiendrez "Die Strasse" comme cas de titre. Le correct serait "Die Straße". En dehors de cela, la pollution prototype est aujourd'hui mal vue.
ComFreek
13

Je l' attention que nous avons payé beaucoup de gens sont à la recherche de strtolower()JavaScript. Ils attendent le même nom de fonction que dans d'autres langues, c'est pourquoi ce message est ici.

Je recommanderais d'utiliser la fonction Javascript native

"SomE StriNg".toLowerCase()

Voici la fonction qui se comporte exactement de la même manière que celle de PHP (pour ceux qui portent du code PHP dans js)

function strToLower (str) {
    return String(str).toLowerCase();
}
Dan
la source
À quoi ça + ''sert?
UpTheCreek
8

Notez que la fonction fonctionnera UNIQUEMENT sur les objets STRING.

Par exemple, je consommais un plugin et je ne savais pas pourquoi j'obtenais une erreur JS "extension.tolowercase is not a function".

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

Ce qui a produit l'erreur "extension.toLowerCase n'est pas une fonction" J'ai donc essayé ce morceau de code, qui a révélé le problème!

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

La sortie était "(typeof extension) => object <=" - donc AhHa, je n'obtenais PAS une chaîne var pour mon entrée. Le correctif est simple - forcez simplement le sacré truc dans une chaîne!:

var extension = String(extension);

Après la conversion, la fonction extension.toLowerCase () a bien fonctionné.

Paul Gorbas
la source
8

Méthode ou fonction: toLowerCase (), toUpperCase ()

Description: Ces méthodes sont utilisées pour couvrir une chaîne ou un alphabet de minuscules en majuscules ou vice versa. par exemple: "et" à "ET".

Conversion en majuscules: - Exemple de code: -

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

Résultat: MÉTHODE DE CONVERSION DE CAS DE TEST

Conversion en minuscules: - Exemple de code:

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

Résultat: test de la fonction de conversion en minuscules

Explication: dans les exemples ci-dessus,

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

Utilisez simplement JS toLowerCase()
let v = "Your Name" let u = v.toLowerCase();ou
let u = "Your Name".toLowerCase();

Harunur Rashid
la source
2

Option 1: utilisation de toLowerCase ();

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

Option 2: utiliser votre propre fonction

 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
    }

Appelez-le comme:

x= convertToLowerCase(x);
Siddhartha
la source
La première option a déjà été mentionnée dans d'autres réponses, la deuxième option échoue gravement pour tout ce qui n'est pas ASCII.
ComFreek
-1

Plateau de cette façon courte

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

Si vous souhaitez le construire vous-même:

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
la source
-2

vous pouvez utiliser la méthode intégrée .toLowerCase () sur les chaînes javascript. ex: var x = "Bonjour"; x.toLowerCase ();

Praveen
la source
1
Ceci est identique à la réponse acceptée moins une bonne mise en forme du code
reggaeguitar
-4

Essayer

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

Démo - JSFiddle

Some Java Guy
la source
7
Sympa, mais pas spécialement javascript, non?
some-non-descript-user
S'appuyant sur ce qu'a dit @ some-non-descript-user, l'OP recherche une solution JavaScript. Bien que cette réponse soit valide, elle ne répond pas à la question du PO selon les paramètres définis.
boxspah
Nice ... Je cherchais une méthode CSS et suis arrivé sur cette page
Abhishek Nalin