片段如下👇
const reg1 = /^[A-Z]$/
const reg2 = /^[a-z]$/
const transformLetter = (word) => {
// 比较有趣的是这个if判断
if (reg1.test(word[0]) || !reg2.test(word[0])) return word
let str = ''
for (let i = 0; i < word.length; i++) {
str += reg1.test(word[i]) ? word[i].toLowerCase() :
reg2.test(word[i]) ? word[i].toUpperCase() : word[i]
}
return str
}
如果看不懂没关系,逻辑是这样滴 👇
在字符串中首字母是大写或者首字母是特殊字符则直接返回字符串,不是这两种情况的话,后面的文本转化逻辑就是小写转大写,大写转小写。
三种情况如下:
a::Abcd
b:abcd
c:#ddsds / $ddd -首字母是特殊字符都算第三种
重新整理下,这样会不会好理解一点呢👊
const transformLetter = (word) => {
if (word[0].toUpperCase() === word[0]) return word
let str = ''
for (let i = 0; i < word.length; i++) {
const letter = word[i]
const upLetter = letter.toUpperCase()
const lowerLetter = letter.toLowerCase()
if (upLetter === letter) {
str += lowerLetter
} else {
str += upLetter
}
}
return str
}
效果
总结
这段代码逻辑没毛病,但不直观,以为在做什么特殊处理但又0注释 💦
大家有没遇到类似的代码呢? 哈哈哈✨