Ben*_*Dev 5 javascript regex reduce dictionary typescript
我正在尝试确定字符串中的组。
例如,“ AAABBCCCCD ”应该根据字符串中的模式将["AAA", "BB", "CCCC", "D"]作为组。
这是我的简单功能:
const patternGroup = (str) => {
let cursor = str[0]
let groups = []
let currentGroup = ""
for (let i = 0; i < str.length; i++) {
let ch = str[i]
if (ch === cursor) {
currentGroup += ch
}
else {
groups.push(currentGroup)
currentGroup = ch
cursor = ch
}
}
if (currentGroup !== "") {
groups.push(currentGroup)
}
return groups
}
Run Code Online (Sandbox Code Playgroud)
它按预期工作,但我正在寻找一个更简单的函数,可能使用 map/reduce 或 regex。有任何想法吗?
你可以简单地使用正则表达式:
var input = "AAABBCCCCD";
const res = input.match(/([^])(\1*)/g);
console.log(res)Run Code Online (Sandbox Code Playgroud)
类似于您的实现:
const patternGroupWithReduce = (str) => {
let currentGroup = ""
return str.split("").reduce((acc, cur, i) => {
currentGroup += cur
if (str[i + 1] !== cur) {
acc.push(currentGroup)
currentGroup = ""
}
return acc
}, [])
}
const patternGroupWithRegex = (str) => {
return str.match(/(.)\1*/g)
}
Run Code Online (Sandbox Code Playgroud)
RegEx /(.)\1 /g * 使用捕获组的反向引用。
\1* 尽可能多地匹配最近捕获的相同字符。
| 归档时间: |
|
| 查看次数: |
377 次 |
| 最近记录: |