Konwertuj ciąg JavaScript na małe litery?


1289

Jak przekonwertować wartość ciągu JavaScript na małe litery?

Przykład: „Twoje imię” na „Twoje imię”

Odpowiedzi:


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

27
Rozważ to również: „toLowerCase nie wpływa na wartość samego łańcucha znaków”. Jest to
oparte

czym jest złożoność toLowerCase()funkcji w czasie i przestrzeni ?
Ramzan Chasygov

7
@RamzanChasygov Jest zarówno O (n), jak i szybszy niż reimplementacja w JavaScript, chyba że masz silnik JavaScript zaprogramowany przez bardzo inteligentnych idiotów.
wizzwizz4,

1
Bezpieczniejszym sposobem wywoływania toLowerCase()zmiennych byłoby (varName || '').toLowerCase():
Dinesh Pandiyan,

412

Użyj jednego toLowerCase lub toLocaleLowerCase sposoby String obiektu. Różnica polega na tym toLocaleLowerCase, że weźmie pod uwagę bieżące ustawienia użytkownika / hosta. Zgodnie z § 15.5.4.17 z ECMAScript Language Specification (ECMA-262) , toLocaleLowerCase...

… Działa dokładnie tak samo jak toLowerCase, z wyjątkiem tego, że jego wynik ma na celu uzyskanie poprawnego wyniku dla bieżących ustawień regionalnych środowiska hosta, a nie wyniku niezależnego od ustawień regionalnych. Różnica wystąpi tylko w kilku przypadkach (takich jak turecki), w których reguły dla tego języka są sprzeczne ze zwykłymi odwzorowaniami przypadków w Unicode.

Przykład:

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

Należy również pamiętać, że funkcje toLowerCasei toLocaleLowerCasesą zaimplementowane, aby działać ogólnie na dowolnym typie wartości. Dlatego możesz wywoływać te funkcje nawet na Stringobiektach innych niż obiekty. Spowoduje to automatyczną konwersję na wartość ciągu przed zmianą wielkości liter każdego znaku w wynikowej wartości ciągu. Możesz na przykład złożyć wniosek toLowerCase bezpośrednio w dniu takim jak ten:

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

i który jest faktycznie równoważny z:

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

Druga postać jest ogólnie preferowana ze względu na prostotę i czytelność. We wcześniejszych wersjach IE pierwsza miała tę zaletę, że mogła działać z nullwartością. Wynik zastosowania toLowerCaselub toLocaleLowerCasewłączenia nulldałby null(a nie warunek błędu).


22
+1, ta odpowiedź zasługuje na o wiele więcej głosów niż zaakceptowana odpowiedź, która w ogóle nic nie wyjaśnia, mam na myśli
Frederik.L

Część dotycząca String.prototype.toLowerCase.apply(null)zwrotu nullwydaje się nieprawidłowa. Zgłasza TypeErrorwyjątek, gdy próbuję.
JohnnyHK,

2
@JohnnyHK Masz rację. Ten bit był prawdziwy we wcześniejszych wersjach IE, gdzie był testowany w momencie, gdy odpowiedź była pierwotnie opublikowana. Zaktualizowałem odpowiedź, aby odzwierciedlić Twoją opinię. Dzięki.
Atif Aziz,

29

Tak, każdy ciąg w JavaScript ma toLowerCase()metodę, która zwróci nowy ciąg, który jest starym ciągiem, małymi literami. Stary ciąg pozostanie niezmieniony.

Możesz więc zrobić coś takiego:

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

20

Funkcje toLocaleUpperCase () lub małe litery nie zachowują się tak, jak powinny.

Na przykład w moim systemie Safari 4, Chrome 4 Beta, Firefox 3.5.x niepoprawnie konwertuje ciągi znaków tureckich.

Przeglądarki odpowiadają na navigator.language jako odpowiednio „en-US”, „tr”, „en-US”.

Ale nie ma sposobu, aby uzyskać ustawienia Accept-Lang użytkownika w przeglądarce, o ile mogłem znaleźć.

Tylko Chrome sprawia mi kłopoty, chociaż skonfigurowałem każdą przeglądarkę jako preferowane ustawienia regionalne tr-TR.

Myślę, że te ustawienia wpływają tylko na nagłówek HTTP, ale nie możemy uzyskać dostępu do tych ustawień przez JS.

W dokumentacji Mozilli napisano: „Znaki w ciągu są konwertowane na ... przy jednoczesnym poszanowaniu bieżących ustawień regionalnych.

W przypadku większości języków zwraca to to samo co ... ”.

Myślę, że jest ważny dla tureckiego, nie różni się, jest skonfigurowany jako en lub tr.

W języku tureckim należy zamienić „DİNÇ” na „dinç” i „DINÇ” na „dınç” lub odwrotnie.


Accept-Languagei navigator.languagesą dwoma całkowicie oddzielnymi ustawieniami. Accept-Languageodzwierciedla wybrane przez użytkownika preferencje dotyczące języków, które chcą otrzymywać na stronach internetowych (a to ustawienie jest niestety niedostępne dla JS). navigator.languageodzwierciedla jedynie lokalizację zainstalowanej przeglądarki internetowej i na ogół nie należy jej używać do niczego. Obie te wartości nie są powiązane z ustawieniami regionalnymi systemu, który jest bitem decydującym o tym toLocaleLowerCase(), co należy zrobić; to ustawienie na poziomie systemu operacyjnego poza zakresem preferencji przeglądarki.
bobince

Myślałem, że Accept-Language i navigator.language powinny być w jakiś sposób powiązane. Możesz skonfigurować domyślny język w kolejności za pomocą ekranów ustawień przeglądarki, ale nie możesz skonfigurować, który navigator.language powinien odpowiedzieć. Myślę, że powinna istnieć inna forma funkcji toLowerCase (), która pobiera parametr ustawień regionalnych.
sanilunlu

Tak, naprawdę powinno. Niestety funkcje związane z ustawieniami regionalnymi w JavaScript są słabe, źle określone i generalnie zawodne.
bobince

15

Tylko przykłady toLowerCase(), toUpperCase()a prototyp nie są jeszcze dostępne toTitleCase()lubtoPropperCase()

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

edytowany w 2018 r


1
toPropperCasepowinien byćtoProperCase
Ian

-1 ten kod jest bardzo podatny na błędy ze wszystkim, co nie jest ASCII. Na przykład dzięki niemieckiemu wpisowi „die straße” otrzymasz tytuł „Die Strasse”. Prawidłowe byłoby „Die Straße”. Poza tym nie można obecnie lekceważyć prototypowych zanieczyszczeń.
ComFreek

13

I zwrócił uwagę, że wiele osób patrzy na strtolower()języku JavaScript. Oczekują tej samej nazwy funkcji, co w innych językach, dlatego ten post jest tutaj.

Polecam korzystanie z natywnej funkcji Javascript

"SomE StriNg".toLowerCase()

Oto funkcja, która zachowuje się dokładnie tak samo jak PHP (dla tych, którzy przenoszą kod PHP do js)

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

Co to jest + ''za?
UpTheCreek

8

Pamiętaj, że funkcja będzie działać TYLKO na obiektach STRING.

Na przykład konsumowałem wtyczkę i byłem zdezorientowany, dlaczego otrzymywałem błąd „rozszerzenie.tolowercase nie jest funkcją”.

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

Co spowodowało błąd „rozszerzenie.toLowerCase nie jest funkcją” Więc wypróbowałem ten fragment kodu, który ujawnił problem!

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

Dane wyjściowe to „(rozszerzenie typeof) => obiekt <=” - więc AhHa, NIE otrzymywałem zmiennej var dla moich danych wejściowych. Poprawka jest jednak prosta - wystarczy zmusić tę cholerną rzecz do stworzenia Sznurka !:

var extension = String(extension);

Po rzutowaniu funkcja extension.toLowerCase () działała poprawnie.


8

Metoda lub funkcja: toLowerCase (), toUpperCase ()

Opis: Te metody są używane do pokrycia ciągu lub alfabetu od małych do wielkich liter i odwrotnie. np .: „i” do „AND”.

Konwersja na wielkie litery: - Przykładowy kod: -

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

Wynik: METODA KONWERSJI PRZYPADKU TESTU

Konwersja na małe litery: - Przykładowy kod:

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

Wynik: testowanie funkcji konwersji małych liter

Objaśnienie: W powyższych przykładach

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

3

Po prostu użyj JS toLowerCase()
let v = "Your Name" let u = v.toLowerCase();lub
let u = "Your Name".toLowerCase();


2

Opcja 1: użycie toLowerCase ();

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

Opcja 2: Korzystanie z własnej funkcji

 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
    }

Nazwij to jako:

x= convertToLowerCase(x);

Pierwsza opcja została już wspomniana w innych odpowiedziach, druga opcja zawiedzie źle dla wszystkich elementów spoza ASCII.
ComFreek


-1

Jeśli chcesz sam go zbudować:

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

możesz użyć wbudowanej metody .toLowerCase () na łańcuchach javascript. np: var x = "Hello"; x.toLowerCase ();


1
Jest to identyczne z przyjętą odpowiedzią minus dobre formatowanie kodu
reggaeguitar

-4

Próbować

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

Demo - JSFiddle


7
Fajnie, ale nie szczególnie javascriptish, nie?
niektórzy użytkownicy bez deskryptu

Opierając się na tym, co powiedział @ some-non-descript-user, OP szuka rozwiązania JavaScript. Chociaż ta odpowiedź jest prawidłowa, nie odpowiada na pytanie PO zgodnie z określonymi parametrami.
boxspah 28.04.16

Fajnie ... szukałem metody CSS i trafiłem na tę stronę
Abhishek Nalin
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.