Javascript 直接使用toUppercase与替换toUppercase
我发现了一个将字符串改为大写的代码Javascript 直接使用toUppercase与替换toUppercase,javascript,string,Javascript,String,我发现了一个将字符串改为大写的代码 const s = 'Keep on Asking' const r = s.replace(/[a-z]+/g, function(m) { return m.toUpperCase() }) console.log(r) 输出:“继续询问” 我通常做的是: const s = 'Keep on Asking' const r = s.toUpperCase() console.log(r) 输出:“继续询问” 有人能解释为什么使用第一种方法吗?直
const s = 'Keep on Asking'
const r = s.replace(/[a-z]+/g, function(m) {
return m.toUpperCase()
})
console.log(r)
输出:“继续询问”
我通常做的是:
const s = 'Keep on Asking'
const r = s.toUpperCase()
console.log(r)
输出:“继续询问”
有人能解释为什么使用第一种方法吗?直接使用toUppercase函数是一种不好的做法吗
有人能解释为什么使用第一种方法吗?直接使用toUppercase
函数是一种不好的做法吗
直接使用toUppercase
函数并不是一个坏习惯。事实上,我认为第一种方法是一种不好的做法,因为:
- 它只影响非重音拉丁字母
- 它的速度较慢,因为它首先需要将正则表达式与字符串匹配
toUppercase
函数是一种不好的做法吗
直接使用toUppercase
函数并不是一个坏习惯。事实上,我认为第一种方法是一种不好的做法,因为:
- 它只影响非重音拉丁字母
- 它的速度较慢,因为它首先需要将正则表达式与字符串匹配
我不知道为什么有人会出于实际目的使用第一种方法。为了避免疑问:只要使用
toUpperCase
或直接使用,没有真正好的(可能是模糊的)理由,不要使用第一个代码块
第一个代码块将仅将英文字母a
更改为z
为大写,而将其他字母(如a
)单独保留。相比之下,由于
必须根据Unicode字符数据库中不区分区域设置的大小写映射派生结果(这不仅明确包括UnicodeData.txt文件,还包括它附带的SpecialCasings.txt文件中所有不区分区域设置的映射)
(这是从,它是toUpperCase
所指的。)
这就是行动上的区别:
const original=“瞧”;
console.log(
“仅替换a-z:”+
原始.replace(/[a-z]+/g,m=>m.toUpperCase())
);
console.log(
“toUpperCase:”+
原始.toUpperCase()
);
console.log(
“Tolocaluepper案例:”+
原文:Tolocalueppercase()
);代码>为了避免疑问:只需使用toUpperCase
或直接使用,没有真正好的(可能是模糊的)理由,不要使用第一个代码块
第一个代码块将仅将英文字母a
更改为z
为大写,而将其他字母(如a
)单独保留。相比之下,由于
必须根据Unicode字符数据库中不区分区域设置的大小写映射派生结果(这不仅明确包括UnicodeData.txt文件,还包括它附带的SpecialCasings.txt文件中所有不区分区域设置的映射)
(这是从,它是toUpperCase
所指的。)
这就是行动上的区别:
const original=“瞧”;
console.log(
“仅替换a-z:”+
原始.replace(/[a-z]+/g,m=>m.toUpperCase())
);
console.log(
“toUpperCase:”+
原始.toUpperCase()
);
console.log(
“Tolocaluepper案例:”+
原文:Tolocalueppercase()
);
这看起来确实很奇怪,因为它会用它的幼稚的
字母表方法特别打断重音词…我会使用第二个-r=s.toUpperCase()
-足够简单和直接。我不是正则表达式专家(例如:我不知道+
是做什么用的)。除非有人能“证明”使用正则表达式在任何方面都更好,否则我认为这就是用右手抓你的左耳——当左手在那里的时候这看起来确实很奇怪,因为它会用它的幼稚的
方法来打破重音词……我会使用第二个-r=s.toUpperCase()
-足够简单和直接。我不是正则表达式专家(例如:我不知道+
是做什么用的)。除非有人能“证明”使用正则表达式在任何方面都更好,否则我认为这就是用右手抓你的左耳——当左手在那里的时候我懂了。因此,除非你试图应用一些条件,否则第二种方法是go@SeoiMin-在你发表评论之前,我刚刚添加了一段新的第一段,因为我意识到我对此并不清楚。:-)是的,第二种方法是正确和标准的方法,直接使用toUpperCase
或tolocalueuppercase
,而不是使用replace
仅挑选某些字符。“toUpperCase可以更改字符串的长度”—使用德语Eszett“ß”就是一个例子。大写字母“Straße”(长度6)返回“STRASSE”(长度7)。@str-谢谢!规范刚刚提到它可能发生,我想不出一个例子。(这有点悲哀,因为几年前我确实遇到了与编程无关的ß=>SS…)我明白了。因此,除非你试图应用一些条件,否则第二种方法是go@SeoiMin-在你发表评论之前,我刚刚添加了一段新的第一段,因为我意识到我对此并不清楚。:-)是的,第二种方法是正确和标准的方法,直接使用toUpperCase
或tolocalueuppercase
,而不是使用replace
仅挑选某些字符。“toUpperCase可以更改字符串的长度”—使用德语Eszett“ß”就是一个例子。大写字母“Straße”(长度6)返回“STRASSE”(长度7)。@str-谢谢!规范刚刚提到它可能发生,我想不出一个例子。(这有点悲哀,因为几年前我