【发布时间】:2021-07-09 02:22:52
【问题描述】:
在 Javascript 中,我想做以下事情。 当我匹配一个小写字母后跟一个大写字母时,我想在它之间添加一个特殊字符。
前:
- myHouse => my_House
- aRandomString => a_Random_String
等等……
我为这场比赛做了一个正则表达式 =>
/([a-z][A-Z](.{0}))+/g
我遇到的问题是如果我这样做了
"aRandomString".replace(/([a-z][A-Z](.{0}))+/g, '_')
当然可以 => _ando_tring
编辑:
我做了这个,但是这不是太复杂了吗?
var mString = "aRandomString";
var match = mString.match(/([a-z][A-Z](.{0}))+/g, '_')
var save = [...match]
match = match.map(e => [e.slice(0, 1), '_', e.slice(1)].join(''))
save.forEach((s,i) => mString = mString.replace(s, match[i]))
console.log(mString)
【问题讨论】:
-
str.replace(/[A-Z]/g, letter => `_${letter}` -
@Bobby ...当亨利选择它作为示例代码时,
aTestStringForMULTIPLEUpperCase这样的字符串值会发生什么?有人期望..._MULTIPLEUpper_Case,这将是任何与您的任务完全匹配的解决方案的结果,还是有人期望..._MULTIPLE_Upper_Case更符合逻辑? -
hiw 版本还可以,我需要的只是一个
_,当有低位后跟高位时。不管它是否切词或任何东西。
标签: javascript regex typescript