Конвертировать строку JavaScript в нижний регистр?


1290

Как я могу преобразовать строковое значение JavaScript во все строчные буквы?

Пример: «Ваше имя» в «Ваше имя»

Ответы:


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

27
Также учтите, что «toLowerCase не влияет на значение самой строки str». Это
основано

что такое временная и пространственная сложность toLowerCase()функции?
Рамзан Часыгов,

7
@RamzanChasygov Это и O (n), и быстрее, чем переопределять его в JavaScript, если у вас нет движка JavaScript, запрограммированного очень умными идиотами.
wizzwizz4

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

413

Используйте методы 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или toLocaleLowerCaseon nullдаст null(а не условие ошибки).


22
+1, этот ответ заслуживает гораздо большего количества голосов, чем принятый ответ, который ничего не объясняет, я имею в виду
Frederik.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()делать; это настройка на уровне ОС, выходящая за рамки настроек браузера.
Бобинц

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

Да, там действительно должно быть. К сожалению, связанные с локали функции в JavaScript слабы, плохо определены и, как правило, ненадежны.
Бобинц

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 is not function».

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

В результате возникла ошибка «extension.toLowerCase не является функцией». Поэтому я попробовал этот фрагмент кода, который выявил проблему!

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

Вывод был "(typeof extension) => object <=" - так что, Ха-ха, я НЕ получал строковую переменную для моего ввода. Исправление прямо вперед, хотя - просто вытолкни проклятую вещь в Струну !:

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 = "Hello"; x.toLowerCase ();


1
Это идентично принятому ответу минус хорошее форматирование кода
reggaeguitar

-4

Пытаться

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

Демо - JSFiddle


7
Красиво, но не особенно в javascriptish, нет?
не-дескриптор-пользователь

Опираясь на то, что сказал @ some-non-descript-user, OP ищет решение JavaScript. Хотя этот ответ действителен, он не отвечает на вопрос ОП согласно заданным параметрам.
boxspah

Хорошо ... Я искал метод CSS и пришел на эту страницу
Абхишек Налин
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.