【问题标题】:Split with regular expression or custom string parsing?用正则表达式拆分还是自定义字符串解析?
【发布时间】:2015-04-20 19:55:25
【问题描述】:

我正在寻找使用 JavaScript 将字符串拆分为具有以下条件的子字符串数组的最有效方法。字符串应该在从 A 到 G 的每个新出现的大写字母处拆分。

例如:

String 1. 'A-7C^6'
String 2. 'Db7 B#4'
String 3. 'Eh6 GoF7'

变成:

Array 1. {'A-7','C^6'}
Array 2. {'Db7','B#4'}
Array 3. {'Eh6','Go','F7'}

我想知道是否有一个正则表达式拆分可以实现这一点,或者我是否必须编写一个自定义字符串解析器。任何输入将不胜感激。提前致谢!

【问题讨论】:

    标签: javascript regex parsing


    【解决方案1】:

    您需要前瞻零长度断言:

    'A-7C^6'.split(/\s*(?=[A-G])/)
    

    Lookahead asssertion (?=[A-G]) 是一种与模式匹配但在结果中不包含该模式的断言。例如,如果您只是将字符串'A-7C^6' 除以/[A-G]/,则结果为["", "-7", "^6"]。那是因为 JS 从结果中删除了匹配的字符串。但是对于/\s*(?=[A-G])/,它仍然匹配[A-G],但不包含在结果中,所以split 不会触及那些字符。

    【讨论】:

    • 这是一个不错的解决方案,但对于可能无法一目了然的未来读者,可以使用更多简单的英语解释。 +1
    • @StephenP 谢谢,更新了答案,希望可以理解。
    • 非常感谢奥列格!但是,我确实忘记提及我希望排除任何出现的 '\' 字符,并排除任何封装在括号中的内容,包括括号。对不起,我之前忘了提这个,谢谢你的解决方案
    • @atasca10 你能提供一些示例字符串吗?
    • @Oleg K.sure: String 1. 'A^7/D7' String 2. 'G-7(B^7) A7' Array 1. {'A^7', 'D7 '} 数组 2. {'G-7', 'A7'}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多