梗概
- 通过括号匹配算法获取字符串中指定括号层级的索引范围
- 分割的时候,判断当前分割符是否在指定括号层级内
JavaScript实现
interface bracket {
left: string,
right: string
}
export class Split {
/**@param brackets 元素为一对括号,用对象表示,left属性和right属性分别用来存放左右括号 */
static splitWithBracket(str: string, split: RegExp, startL = 0, endL = startL, brackets: bracket[] = undefined) {
if (!brackets) {
brackets = [
{ left: '(', right: ')' },
{ left: '[', right: ']' },
{ left: '{', right: '}' },
{ left: '(', right: ')' }
]
}
let bracketRange = this.getBracketRange(str, brackets)
return this.selectiveSplit(str, split, match => {
return this.isInBracket(match.index as number, bracketRange, startL, endL)
})
}
}
1. 依赖