【发布时间】:2018-03-08 18:00:22
【问题描述】:
我需要一种在空格上拆分字符串但保持带引号的子字符串完整的方法。
例如:
Input:
str = 'this "is a"test string'
Output:
[this, is a, test, string]
当我使用时:
str.match(/\\?.|^$/g).reduce((p, c) => {
if(c === '"' || c === "'"){
p.quote ^= 1;
}else if(!p.quote && c === ' '){
p.a.push('');
}else{
p.a[p.a.length-1] += c.replace(/\\(.)/,"$1");
}
return p;
}, {a: ['']}).a
它保持引用的子字符串完整,并根据需要在空格上拆分。
但是,在提供的示例中,它不会正确拆分术语,其中带引号的子字符串后面紧跟一个字母。相反,我得到的结果是这样的:
[this, is atest, string]
编辑:
我相信这个问题与其他类似的问题不同,因为它们都没有排除引号 并且 在结束引号后没有空格时正确拆分术语,就像在这种情况下:'this "is a"test string' .
【问题讨论】:
-
@try-catch-finally 由于与前一个相同的原因,该副本无效 - 没有任何内容不包括引号。 (有趣的是,答案之一是 OP 尝试使用的状态机代码。)
标签: javascript regex