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

例子:从“Your Name”到“Your Name”


当前回答

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

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

只有Chrome给我带来了麻烦,尽管我已经将每个浏览器配置为首选的tr-TR语言环境。我认为这些设置只影响HTTP报头,但我们不能通过JavaScript访问这些设置。

在Mozilla文档中,它说“字符串中的字符被转换为……”同时尊重当前区域设置。对于大多数语言,这将返回相同的…”。我认为它对土耳其语是有效的,如果配置为en或tr,它没有区别。

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

其他回答

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

var x = "Hello";
x.toLowerCase();
var lowerCaseName = "Your Name".toLowerCase();

使用String对象的toLowerCase或toLocaleLowerCase方法。不同之处在于toLocaleLowerCase将考虑用户/主机的当前语言环境。根据ECMAScript语言规范(ECMA-262)的§15.5.4.17,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或toLocaleLowerCase的结果将产生null(而不是错误条件)。

注意,该函数只对字符串对象有效。

例如,我正在使用一个插件,我很困惑为什么我得到了一个“扩展”。tolowercase不是一个函数”JavaScript错误。

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

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

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

输出是“(typeof extension)=>object<=”-所以啊哈,我没有得到一个字符串变量为我的输入。修复是直截了当的-只是迫使一个该死的东西变成一个字符串!:

var extension = String(extension);

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

我注意到很多人在JavaScript中寻找strtolower()。他们希望函数名与其他语言相同,这就是为什么这篇文章在这里。

我建议使用原生JavaScript函数:

“一些字符串“.toLowerCase ()

下面的函数与PHP函数的行为完全相同(适用于那些将PHP代码移植到JavaScript的人)

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