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


1289

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

示例:从“您的名字”到“您的名字”

Answers:


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

27
还请考虑“ toLowerCase不会影响字符串str本身的值”。这是一个文档的基础这里developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...
卡里Bondoc医师

toLowerCase()功能的时空复杂度是多少?
Ramzan Chasygov,

7
@RamzanChasygov它比在JavaScript中重新实现它既快,又快,除非您有一个非常聪明的白痴编写的JavaScript引擎。
wizzwizz4'4

1
一种更安全的toLowerCase()变量调用方法是(varName || '').toLowerCase();
Dinesh Pandiyan

412

使用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(而不是错误条件)。


22
+1,这个答案比起没有任何解释的被接受答案应该获得更多的选票,这是我的意思
Frederik.L,

关于String.prototype.toLowerCase.apply(null)返回的部分null似乎不正确。TypeError我尝试时会引发异常。
JohnnyHK

2
@JohnnyHK你是对的。该位过去在最初发布答案时经过测试的IE早期版本中成立。我已经更新了答案以反映您的反馈。谢谢。
Atif Aziz 2013年

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”。

但是,据我所知,无法在浏览器中获取用户的“接受语言”设置。

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

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

Mozilla文档中,它说:“在遵守当前语言环境的同时,字符串中的字符会转换为...。

对于大多数语言,此结果将与...“相同。

我认为这对土耳其语有效,它与配置为en或tr并无区别。

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


Accept-Languagenavigator.language是两个完全独立的设置。Accept-Language反映用户对他们希望在网页中接收哪种语言的选择偏好(并且此设置对于JS来说是不可访问的)。navigator.language仅反映了已安装的Web浏览器的本地化版本,通常不应用于任何用途。这两个值都与系统区域设置无关,系统区域设置决定了toLocaleLowerCase()将要执行的操作。这是操作系统级别的设置,超出了浏览器偏好的范围。
bobince 2010年

我认为Accept-Language和navigator.language应该有某种联系。您可以通过浏览器的设置屏幕依次配置默认语言,但因此无法配置navigator.language应该响应的内容。我认为应该有另一种形式的toLowerCase()函数,它获取一个语言环境参数。
sanilunlu 2011年

是的,应该有。不幸的是,JavaScript中与语言环境相关的功能薄弱,指定不当且通常不可靠。
bobince 2011年

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
Ian

-1此代码非常容易出现所有非ASCII错误。例如,使用德语输入“ diestraße”,您将获得“ Die Strasse”作为标题。正确的是“ DieStraße”。除此之外,如今原型污染已不复存在。
ComFreek

13

我所许的注意,很多人都在寻找strtolower()在JavaScript中。他们期望与其他语言使用相同的函数名称,这就是本文的原因。

我建议使用本机 Javascript函数

"SomE StriNg".toLowerCase()

这是功能与PHP完全相同的函数(对于那些将PHP代码移植到js中的函数)

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

有什么+ ''
UpTheCreek

8

请注意,该功能仅适用于STRING对象。

例如,我正在使用一个插件,并且很困惑为什么我收到“ extension.tolowercase不是函数” JS错误。

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

产生错误“ extension.toLowerCase不是函数”的代码,因此我尝试了这段代码,从而揭示了问题所在!

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

输出为“(typeof extension)=> object <=”-因此,啊哈,我的输入没有字符串var。解决方法很简单-只需将该死的东西强制为String !:

var extension = String(extension);

强制转换后,extension.toLowerCase()函数工作正常。


8

方法或函数:toLowerCase(),toUpperCase()

说明:这些方法用于将字符串或字母从小写字母转换为大写字母,反之亦然。例如:“ and”到“ AND”。

转换为大写:-示例代码:-

<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

您可以对javascript字符串使用内置的.toLowerCase()方法。例如: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
不错,但不是特别适用于JavaScript,不是吗?
某些非描述用户

基于@ some-non-descript-user所说的内容,OP正在寻找JavaScript解决方案。尽管此答案有效,但按照定义的参数并不能回答OP的问题。
boxspah

很好...我一直在寻找CSS方法,并转到了此页面
Abhishek Nalin
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.