Перетворити рядок JavaScript у всі регістри?


1289

Як я можу перетворити значення рядка JavaScript у всі маленькі літери?

Приклад: "Ваше ім'я" до "ваше ім'я"

Відповіді:


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

27
Враховуйте це також: "toLowerCase не впливає на значення самої строки str". Це основа на документації тут developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
Кері Бондок

що таке часова та просторова складність toLowerCase()функції?
Рамзан Часигов

7
@RamzanChasygov Це і O (n), і швидше, ніж повторне його впровадження в JavaScript, якщо у вас немає двигуна JavaScript, запрограмованого дуже розумними ідіотами.
wizzwizz4

1
Більш безпечним способом було б звернення toLowerCase()до змінних (varName || '').toLowerCase();
Дінеш Пандіян

412

Використовуйте або toLowerCase, або toLocaleLowerCase методи об’єкта String . Різниця полягає в тому toLocaleLowerCase, що враховуватиметься поточна локальність користувача / хоста. Згідно з пунктом 15.5.4.17 специфікації мови ECMAScript (ECMA-262) , toLocaleLowerCase

… Працює точно так само, як і toLowerCase, за винятком того, що його результат призначений для отримання правильного результату для поточного локального середовища хост-середовища, а не результату, незалежного від місця. Різниця буде лише в кількох випадках (наприклад, турецькій), коли правила для цієї мови суперечать звичайним відображенням випадків Unicode.

Приклад:

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

Також зауважте, що функції toLowerCaseта toLocaleLowerCaseфункції реалізовані для загальної роботи над будь-яким типом значень. Тому ви можете викликати ці функції навіть на не Stringоб’єктах. Це буде означати автоматичне перетворення до рядкового значення перед зміною регістру кожного символу в отриманому рядковому значенні. Наприклад, ви можете подати заявку toLowerCase безпосередньо на таку дату:

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

який фактично еквівалентний:

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

Друга форма, як правило, є кращою для своєї простоти та читабельності. У попередніх версіях IE перша мала перевагу, що вона може працювати зі nullзначенням. Результат застосування toLowerCaseабо toLocaleLowerCaseна nullдасть результат null(а не умова помилки).


22
+1, ця відповідь заслуговує на більшу кількість голосів, ніж прийнята відповідь, яка взагалі нічого не пояснює, я маю на увазі це
Фредерік.L

Частина про String.prototype.toLowerCase.apply(null)повернення nullздається невірною. Це кидає TypeErrorвиняток, коли я його спробую.
JohnnyHK

2
@JohnnyHK Ви маєте рацію. Цей біт використовувався для істинної версії в більш ранніх версіях IE, де він був протестований в той момент, коли відповідь була розміщена спочатку. Я оновив відповідь, щоб відобразити ваші відгуки. Дякую.
Атіф Азіз

29

Так, будь-яка рядок у JavaScript має toLowerCase()метод, який повертає нову рядок, що є старою рядком у всіх нижчих регістрах. Стара рядок залишиться незмінною.

Отже, ви можете зробити щось на кшталт:

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

20

toLocaleUpperCase () або малі регістри не ведуть себе так, як слід робити.

Наприклад, у моїй системі, Safari 4, Chrome 4 Beta, Firefox 3.5.x, вона неправильно перетворює рядки з турецькими символами.

Браузери відповідають на navigator.language як "en-US", "tr", "en-US" відповідно.

Але немає можливості отримати налаштування користувача Accept-Lang у браузері, наскільки я міг знайти.

Тільки Chrome створює проблеми, хоча я налаштовував кожен веб-переглядач як перевагу локалізації tr-TR.

Я думаю, що ці налаштування впливають лише на заголовок HTTP, але ми не можемо отримати доступ до цих налаштувань через JS.

У документації на Mozilla написано: "Символи в рядку перетворюються на ... при повазі до поточної мови.

Для більшості мов це повернеться так само, як ... ".

Я думаю, що він дійсний для турецької мови, він не відрізняється, він налаштований як en або tr.

Турецькою мовою він повинен перетворити "DİNÇ" на "dinç", а "DINÇ" на "dınç" або навпаки.


Accept-Languageі navigator.languageє двома повністю окремими налаштуваннями. Accept-Languageвідображає вибрані користувачем уподобання щодо того, які мови він хоче отримувати на веб-сторінках (і це налаштування є надзвичайно недоступним для JS). navigator.languageлише відображає, яка локалізація веб-браузера була встановлена, і її взагалі не слід використовувати ні для чого. Обидва ці значення не пов'язані з локальною системою, і це біт, який вирішує, що toLocaleLowerCase()робити; це налаштування на рівні ОС поза сферою налаштувань браузера.
bobince

Я вважав, що Accept-Language і navigator.language повинні бути якось пов'язані. Ви можете налаштувати мову за замовчуванням по порядку через екрани налаштувань браузера, але таким чином ви не можете налаштувати, на що повинен відповідати navigator.language. Я думаю, має бути інша форма функції toLowerCase (), яка отримує параметр локалі.
sanilunlu

Так, дійсно повинно бути. На жаль, функції, пов’язані з локальною локальністю, у JavaScript слабкі, погано вказані та загалом ненадійні.
bobince

15

Просто приклади для toLowerCase(), toUpperCase()а прототип ще не доступний toTitleCase()абоtoPropperCase()

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

відредаговано 2018 рік


1
toPropperCaseмає бутиtoProperCase
Іван

-1 цей код дуже схильний до помилок у всьому, що не стосується ASCII. Наприклад, з німецьким введенням «die straße» ви отримаєте «Die Strasse» як основний випадок. Правильним було б "Die Straße". Крім цього, сьогодні забруднення прототипу нахмурилися.
ComFreek

13

Я заплатив увагу , що багато людей шукають для strtolower()в JavaScript. Вони очікують такої ж назви функції, що і в інших мовах, тому ця публікація тут.

Я рекомендую використовувати нативну функцію Javascript

"SomE StriNg".toLowerCase()

Ось функція, яка поводиться точно так само, як функція PHP (для тих, хто переносить PHP-код у js)

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

Для чого + ''?
UpTheCreek

8

Зауважте, що ця функція ТОЛЬКО працюватиме на об’єктах STRING.

Наприклад, я використовував плагін, і був розгублений, чому я отримував помилку JS "extension.tolowercase - це не функція".

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

Що призвело до помилки "extension.toLowerCase не є функцією". Тому я спробував цей фрагмент коду, який виявив проблему!

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

Вихід був "(typeof розширення) => об'єкт <=" - так що AhHa, я НЕ отримував строковий var для мого введення. Однак виправлення прямо вперед - просто змусьте прокляту річ перетворитись на рядку

var extension = String(extension);

Після виступу функція extension.toLowerCase () спрацювала нормально.


8

Метод або функція: toLowerCase (), toUpperCase ()

Опис: Ці методи використовуються для покриття рядка або алфавіту з нижнього регістру до верхнього регістру або навпаки. наприклад: "і" до "І".

Перехід до верхнього регістру: - Приклад коду: -

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

Результат: МЕТОД КОНВЕРСУВАННЯ ВИПУСКУ

Перетворення на малі регістри: - Приклад коду:

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

Результат: тестування функції перетворення малих літер

Пояснення. У наведених вище прикладах

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


2

Варіант 1: використання toLowerCase ();

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

Варіант 2: Використання власної функції

 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
    }

Назвіть це як:

x= convertToLowerCase(x);

Перший варіант вже згадувався в інших відповідях, другий варіант погано підходить для всього, що не стосується ASCII.
ComFreek


-1

Якщо ви хочете побудувати його самостійно:

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

ви можете використовувати вбудований метод .toLowerCase () для рядків javascript. наприклад: var x = "Привіт"; x.toLowerCase ();


1
Це ідентично прийнятій відповіді мінус гарне форматування коду
reggaeguitar

-4

Спробуйте

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

Демо - JSFiddle


7
Приємно, але не особливо javascriptish, ні?
не описує опис,

Спираючись на те, що сказав @ користувач, який не описує опис, ОП шукає рішення JavaScript. Хоча ця відповідь є дійсною, вона не відповідає на питання ОП за визначеними параметрами.
boxspah

Приємно ... Я шукав метод CSS і прийшов на цю сторінку
Abhishek Nalin
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.