不了解第二个参数.replace()字符串方法

时间:2019-10-29 16:29:07

标签: javascript

我不明白“ chr”在此功能中所代表的含义或含义。我知道“匹配”必须代表与正则表达式匹配的字符串中的每个字符,“ chr”必须用于确定天气,每个字符是大写还是小写,但我不知道它是如何工作的或如何确定的正确/错误值。

let swapcase = str => {
  return str.replace(/([a-z]+)|([A-Z]+)/g, (match, chr) => {
    if (chr) {
      return match.toUpperCase()
    } else {
      return match.toLowerCase()
    }
  })
}
console.log(swapcase('DdishDJSK')) // logs dDISHdjsk

1 个答案:

答案 0 :(得分:1)

您的正则表达式:

/([a-z]+)|([A-Z]+)/g

由两个“组成部分”组成(用括号括起来),每个匹配的字符串都可以是第一个或第二个组成部分的匹配项。

chr是指第一个组成部分匹配的内容,即,如果您的字符串碰巧与第一个组成部分匹配,则chr将等于您的字符串。否则它将计算为undefined

在您的特定情况下,这意味着如果您的匹配项是小写字母,chr将等于此匹配项,因此if(chr)将解析为true。如果您的匹配是大写字母,则chr将是未定义的,而if(chr)将解析为false