Как преобразовать строковое значение JavaScript в строчные буквы?
Пример: от "Your Name" до "your name"



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Да, любая строка в JavaScript имеет метод toLowerCase(), который вернет новую строку, которая является старой строкой во всех нижних регистрах. Старая строка останется без изменений.
Итак, вы можете сделать что-то вроде:
"Foo".toLowerCase();
document.getElementById('myField').value.toLowerCase();
var lowerCaseName = "Your Name".toLowerCase();
какова временная и пространственная сложность функции toLowerCase()?
@RamzanChasygov Это одновременно O (n) и быстрее, чем повторная реализация на JavaScript, если только у вас нет движка JavaScript, запрограммированного очень умными идиотами.
Более безопасный способ вызвать toLowerCase() для переменных - (varName || '').toLowerCase();
Используйте методы toLowerCase или toLocaleLowerCase объекта Нить. Разница в том, что toLocaleLowerCase будет учитывать текущую локаль пользователя / хоста. Согласно § 15.5.4.17 Спецификация языка ECMAScript (ECMA-262), toLocaleLowerCase…
…works exactly the same as toLowerCase except that its result is intended to yield the correct result for the host environment’s current locale, rather than a locale-independent result. There will only be a difference in the few cases (such as Turkish) where the rules for that language conflict with the regular Unicode case mappings.
Пример:
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 (а не состояние ошибки).
+1, этот ответ заслуживает гораздо большего количества голосов, чем принятый ответ, который вообще ничего не объясняет, я имею в виду
Часть о том, что String.prototype.toLowerCase.apply(null) возвращает null, не кажется правильной. Когда я пробую, он выдает исключение TypeError.
@JohnnyHK Ты прав. Этот бит сохранялся в более ранних версиях IE, где он был протестирован во время первоначальной публикации ответа. Я обновил ответ, чтобы отразить ваш отзыв. Спасибо.
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 (), которая получает параметр локали.
Да, действительно должно быть. К сожалению, функции JavaScript, связанные с локалью, слабы, плохо определены и, как правило, ненадежны.
Просто примеры для toLowerCase(), toUpperCase() и прототип для еще не доступных toTitleCase() или toProperCase()
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.info('Original: ' + OriginalCase);
console.info('toLowerCase(): ' + lowercase);
console.info('toUpperCase(): ' + upperCase);
console.info('toTitleCase(): ' + titleCase);отредактировано 2018
toPropperCase должен быть toProperCase
-1 этот код очень подвержен ошибкам со всем, что не является ASCII. Например, если ввести немецкий язык "die straße", вы получите "Die Strasse" в качестве заголовка. Правильнее было бы "Die Straße". Кроме того, загрязнение прототипов в настоящее время не приветствуется.
Я обратил внимание, что многие люди используют Ищу для strtolower() в JavaScript. Они ожидают того же имени функции, что и на других языках, поэтому этот пост здесь.
Я бы рекомендовал использовать функцию Javascript родные
"SomE StriNg".toLowerCase()
Вот функция, которая ведет себя точно так же, как и функция PHP (для тех, кто переносит код PHP в js)
function strToLower (str) {
return String(str).toLowerCase();
}
Обратите внимание, что функция будет работать ТОЛЬКО с объектами STRING.
Например, я использовал плагин и не понимал, почему я получаю Ошибка JS "extension.tolowercase не является функцией".
onChange: function(file, extension)
{
alert("extension.toLowerCase()=>" + extension.toLowerCase() + "< = ");
В результате возникла ошибка «extension.toLowerCase не является функцией». Итак, я попробовал этот фрагмент кода, который выявил проблему!
alert("(typeof extension)=>" + (typeof extension) + "< = ");;
Результатом было «(typeof extension) => object <=» - так что, да, я НЕ получал строковую переменную для ввода. Исправление простое - просто вставьте эту чертову штуку в String !:
var extension = String(extension);
После приведения функция extension.toLowerCase () работала нормально.
Метод или функция: 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.
Пытаться
<input type = "text" style = "text-transform: uppercase"> //uppercase
<input type = "text" style = "text-transform: lowercase"> //lowercase
Красиво, но не особенно JavaScript, не так ли?
Основываясь на том, что сказал @ some-non-descript-user, OP ищет решение JavaScript. Хотя этот ответ действителен, он не отвечает на вопрос OP в соответствии с определенными параметрами.
Отлично ... Я искал метод CSS и зашел на эту страницу
Вариант 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.
Просто используйте JS toLowerCase()let v = "Your Name"
let u = v.toLowerCase(); или let u = "Your Name".toLowerCase();
вы можете использовать встроенный метод .toLowerCase () для строк javascript. пример: var x = "Привет"; x.toLowerCase ();
Это идентично принятому ответу за исключением хорошего форматирования кода.
Поднос этот короткий путь
var lower = (str+"").toLowerCase();
Если вы хотите построить его самостоятельно:
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
}
Учтите также, что «toLowerCase не влияет на значение самой строки str». Это основано на документации здесь developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…