ChatGPT解决这个技术问题 Extra ChatGPT

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

如何将 JavaScript 字符串值转换为全部小写字母?

示例:"Your Name""your name"


J
John Topley
var lowerCaseName = "Your Name".toLowerCase();

还要考虑这一点,“toLowerCase 不会影响字符串 str 本身的值”。这是基于此处的文档 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
toLowerCase() 函数的时间和空间复杂度是多少?
@RamzanChasygov 它比用 JavaScript 重新实现它既 O(n) 又快,除非你有一个由非常聪明的白痴编写的 JavaScript 引擎。
对变量调用 toLowerCase() 的更安全的方法是 (varName || '').toLowerCase()
A
Atif Aziz

使用 String 对象的 toLowerCasetoLocaleLowerCase 方法。不同之处在于 toLocaleLowerCase 将考虑用户/主机的当前语言环境。根据 ECMAScript Language Specification (ECMA-262) 第 15.5.4.17 节,toLocaleLowerCase

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

例子:

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

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

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

这实际上相当于:

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

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


+1,这个答案比完全没有解释的公认答案值得更多的投票,我的意思是
关于 String.prototype.toLowerCase.apply(null) 返回 null 的部分似乎不正确。当我尝试它时,它会引发 TypeError 异常。
@JohnnyHK 你是对的。在最初发布答案时对其进行测试的早期版本的 IE 中,这一点曾经是正确的。我已经更新了答案以反映您的反馈。谢谢。
这个答案非常有用,因为它增加了对 apply() 本身的理解
V
VisioN

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

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

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

P
Peter Mortensen

toLocaleUpperCase() 或小写函数的行为不像他们应该做的那样。例如,在我的系统上,使用 Safari 4、Chrome 4 Beta 和 Firefox 3.5.x,它会错误地转换带有土耳其字符的字符串。浏览器对 navigator.language 的响应分别为“en-US”、“tr”、“en-US”。

但据我所知,没有任何方法可以在浏览器中获取用户的 Accept-Lang 设置。

尽管我已将每个浏览器都配置为首选 tr-TR 区域设置,但只有 Chrome 给我带来了麻烦。我认为这些设置只影响 HTTP 标头,但我们无法通过 JavaScript 访问这些设置。

Mozilla documentation 中它说“字符串中的字符被转换为......同时尊重当前语言环境。对于大多数语言,这将返回与......相同的内容”。我认为它对土耳其语有效,如果它被配置为 entr 并没有什么不同。

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


Accept-Languagenavigator.language 是两个完全独立的设置。 Accept-Language 反映了用户对他们希望在网页中接收哪些语言的偏好(不幸的是,JS 无法访问此设置)。 navigator.language 仅反映安装了网络浏览器的本地化版本,一般不应用于任何用途。这两个值都与系统语言环境无关,系统语言环境是决定 toLocaleLowerCase() 做什么的位;这是超出浏览器首选项范围的操作系统级别设置。
我认为 Accept-Language 和 navigator.language 应该以某种方式相关。您可以通过浏览器的设置屏幕按顺序配置默认语言,但您无法配置 navigator.language 应响应的内容。我认为应该有另一种形式的函数 toLowerCase() 获取语言环境参数。
是的,确实应该有。不幸的是,JavaScript 中与语言环境相关的功能很弱、指定不充分且通常不可靠。
P
Peter Mortensen

只是 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 = '你的名字'; var 小写 = OriginalCase.toLowerCase(); var upperCase = lowercase.toUpperCase(); var titleCase = upperCase.toTitleCase(); console.log('原文:' + OriginalCase); console.log('toLowerCase(): ' + 小写); console.log('toUpperCase(): ' + upperCase); console.log('toTitleCase(): ' + titleCase);


toPropperCase 应该是 toProperCase
-1 此代码很容易出现所有非 ASCII 错误。例如,使用德语输入“die straße”,您将得到“Die Strasse”作为标题大小写。正确的是“Die Straße”。除此之外,原型污染现在不受欢迎。
P
Peter Mortensen

我注意到很多人在 JavaScript 中为 strtolower() are looking。他们期望与其他语言中的函数名称相同,这就是这篇文章在这里的原因。

我建议使用 native JavaScript 函数:

"SomE StriNg".toLowerCase()

这是与 PHP 完全相同的函数(适用于那些将 PHP 代码移植到 JavaScript 中的人)

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

P
Peter Mortensen

方法或函数: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() 方法将任何字符串转换为“大写”字母。

toLowerCase() 方法将任何字符串转换为“小写”字母。


P
Peter Mortensen

请注意,该函数仅适用于字符串对象。

例如,我正在使用一个插件,并且很困惑为什么会收到“extension.tolowercase is not a function”JavaScript 错误。

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

这产生了错误“extension.toLowerCase 不是函数”。所以我尝试了这段代码,它揭示了问题!

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

输出是 "(typeof extension)=>object<=" - 所以啊哈,我的输入没有得到字符串 var。修复很简单 - 只需将该死的东西强制转换为字符串!:

var extension = String(extension);

演员表之后,extension.toLowerCase() 函数运行良好。


H
Harun Or Rashid

只需使用 JS toLowerCase()
let v = "Your Name" let u = v.toLowerCase();
let u = "Your Name".toLowerCase();


P
Penny Liu

选项 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 都失败了。
F
Force Bolt
const str = 'Your Name';

// convert string to lowercase
const lowerStr = str.toLowerCase();

// print the new string
console.log(lowerStr);

P
Peter Mortensen

如果您想自己构建它:

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
}

P
Peter Mortensen

您可以在 JavaScript 字符串上使用内置的 .toLowerCase() 方法。例子:

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

这与接受的答案相同减去良好的代码格式
P
Peter Mortensen

试试这个简短的方法:

var lower = (str+"").toLowerCase();

P
Peter Mortensen

尝试

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

Demo - JSFiddle


不错,但不是特别像javascript,不是吗?
基于@some-non-descript-user 所说的,OP 正在寻找 JavaScript 解决方案。虽然这个答案是有效的,但它并没有按照定义的参数回答 OP 的问题。
很好...我正在寻找一种 CSS 方法并来到这个页面