将 JavaScript 字符串转换为全小写?

IT技术 javascript string
2021-02-06 13:49:37

如何将 JavaScript 字符串值转换为所有小写字母?

示例:"Your Name""your name"

6个回答
var lowerCaseName = "Your Name".toLowerCase();
调用toLowerCase()变量的更安全方法(varName || '').toLowerCase()
2021-03-28 13:49:37
还要考虑这一点,“toLowerCase 不会影响字符串 str 本身的值”。这是基于developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
2021-03-29 13:49:37
什么是toLowerCase()函数的时间复杂度和空间复杂度
2021-04-01 13:49:37
@RamzanChasygov 除非你有一个由非常聪明的白痴编程的 JavaScript 引擎,否则它比在 JavaScript 中重新实现它是 O(n) 和更快。
2021-04-03 13:49:37

使用String对象的toLowerCasetoLocaleLowerCase方法不同之处在于将考虑用户/主机的当前区域设置。根据ECMAScript 语言规范 (ECMA-262) 的第 15.5.4.17 节……toLocaleLowerCasetoLocaleLowerCase

...与 toLowerCase 的工作原理完全相同,不同之处在于它的结果旨在为宿主环境的当前语言环境生成正确的结果,而不是与语言环境无关的结果。只会在少数情况下(例如土耳其语)有所不同,其中该语言的规则与常规 Unicode 大小写映射冲突。

例子:

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

另请注意,实现了toLowerCasetoLocaleLowerCase函数以在任何值类型上通用因此,您甚至可以在非String对象上调用这些函数这样做将意味着在更改结果字符串值中每个字符的大小写之前自动转换为字符串值。例如,您可以直接在这样的日期申请 toLowerCase

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

这实际上等效于:

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

由于其简单性和可读性,通常首选第二种形式。在早期版本的 IE 上,第一个的好处是它可以使用一个null值。应用toLowerCasetoLocaleLowerCase打开的结果null将产生null(而不是错误条件)。

关于String.prototype.toLowerCase.apply(null)返回的部分null似乎不正确。TypeError当我尝试时它会引发异常。
2021-03-26 13:49:37
+1,这个答案比接受的答案更值得投票,这个答案根本没有解释,我的意思是
2021-03-31 13:49:37
@JohnnyHK 你说得对。这一点曾经在早期版本的 IE 上成立,在最初发布答案时对其进行了测试。我已经更新了答案以反映您的反馈。谢谢。
2021-04-05 13:49:37

是的,JavaScript 中的任何字符串都有一个toLowerCase()方法,方法将返回一个新字符串,该字符串是所有小写的旧字符串。旧字符串将保持不变。

因此,您可以执行以下操作:

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

toLocaleUpperCase() 或小写函数的行为不像它们应该做的那样。

例如,在我的系统 Safari 4、Chrome 4 Beta、Firefox 3.5.x 中,它错误地转换了带有土耳其语字符的字符串。

浏览器分别响应 navigator.language 为“en-US”、“tr”、“en-US”。

但是就我所能找到的,没有办法在浏览器中获取用户的 Accept-Lang 设置。

尽管我已将每个浏览器配置为首选 tr-TR 语言环境,但只有 Chrome 给我带来了麻烦。

我认为这些设置只影响 HTTP 标头,但我们无法通过 JS 访问这些设置。

Mozilla 文档中,它说“字符串中的字符被转换为......同时尊重当前的语言环境。

对于大多数语言,这将返回与...相同的结果。”。

我认为它对土耳其语有效,它配置为 en 或 tr 并没有什么不同。

在土耳其语中,它应该将“DİNÇ”转换为“dinç”,将“DINÇ”转换为“dınç”,反之亦然。

是的,真的应该有。不幸的是,JavaScript 中与语言环境相关的特性很弱,没有详细说明,而且通常不可靠。
2021-03-21 13:49:37
我认为 Accept-Language 和 navigator.language 应该以某种方式相关。您可以通过浏览器的设置屏幕按顺序配置默认语言,但因此您无法配置 navigator.language 应该响应的内容。我认为应该有另一种形式的函数 toLowerCase() 来获取语言环境参数。
2021-03-28 13:49:37
Accept-Language并且navigator.language是两个完全独立的设置。Accept-Language反映了用户对他们希望在网页中接收哪些语言的选择偏好(不幸的是,JS 无法访问此设置)。navigator.language仅反映安装了 Web 浏览器的哪个本地化版本,通常不应用于任何用途。这两个值都与系统区域设置无关,这是决定要做什么的位toLocaleLowerCase()这是超出浏览器首选项范围的操作系统级别设置。
2021-04-13 13:49:37

只是一个例子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.log('Original: ' + OriginalCase);
console.log('toLowerCase(): ' + lowercase);
console.log('toUpperCase(): ' + upperCase);
console.log('toTitleCase(): ' + titleCase);

2018年编辑

-1 这段代码很容易出错,所有非 ASCII 的东西。例如,使用德语输入“die straße”,您将得到“Die Strasse”作为标题大小写。正确的应该是“Die Straße”。除此之外,原型污染现在不受欢迎。
2021-03-22 13:49:37
toPropperCase 应该 toProperCase
2021-04-01 13:49:37