如何将字符串中的每个带引号的句子放入数组(javascript)
我有一个字符串如下所示:如何将字符串中的每个带引号的句子放入数组(javascript),javascript,arrays,string,Javascript,Arrays,String,我有一个字符串如下所示: var message = '"this is a question" "answer one" "answer two" "answer three"'; array = ["this is a question", "answer one", "answer two", "answer three"];
var message = '"this is a question" "answer one" "answer two" "answer three"';
array = ["this is a question", "answer one", "answer two", "answer three"];
我希望字符串引号内的每个句子都位于如下数组中:
var message = '"this is a question" "answer one" "answer two" "answer three"';
array = ["this is a question", "answer one", "answer two", "answer three"];
如何在JavaScript中实现这一点?谢谢。您是否尝试过
str.split()
const array=message.split(/\s(?)/);
//这个正则表达式搜索一个空格,但确保它后面有一个“after”。
文件:
以防您要分解正则表达式:
/ start of regex
\s escaped character: whitespace
(?= start of positive lookahead
" literal character: quotation mark
) end of positive lookahead
/ end of regex
编辑:
奥斯卡·格罗瑟在评论中说,有时候这是行不通的。
这里有一个解决方案:
/(?<=[^\\]?")\s+(?=")/
/(?试试我刚刚设计的这个函数:
let string='“这是一个问题”“回答一”“回答二”“回答三”
让string2='“这是一个问题”“回答一”“回答二”“回答三”
让string3='“这是一个问题”随机省略“回答一”引号之间的文本“回答二”zzz“回答三”
函数拆分字符串(字符串){
让wordArray=[]
让未完成字=”
设quotePos=0;
for(设i=0;i
获取完整的引号。这是使用
(可选)删除引号中的”
(双引号)。这可以使用inside完成
1.获取报价
使用以下方法将在“代码”>“(双引号)之间的空白处分割字符串,但是不会考虑<代码> \ <代码>(逃出双引号):<代码>(?这回答了你的问题吗?我在Java中做了一些非常类似的事情,但我很难让我的版本在JS中工作。这一个可以工作,谢谢!不客气。我很高兴我能帮上忙:)它确实有一个问题:引号之间的字符也被添加到
incompleteWord
中。在将字符添加到incompleteWord
之前检查字符是否是引号的一部分应该可以解决这个问题。不过这是一个很好的解决方案!非常感谢您指出@OskarGrosser,我不敢相信我没有注意到它。我还注意到我的代码没有修剪在引号之间输入字符,因此我更新了我的代码。再次感谢:)当后面跟着另一个引号(例如“training”“Regular”
)时,对于包含尾随空格的引号,这不会像预期的那样起作用。对于由多个空格分隔的引号(例如“Two”),这也不会像预期的那样起作用“中间有空格”
)。为了更好地分解正则表达式,请将其复制到此处,并在lookback中包含[^\\]项。否则像“我转义了”
这样的字符串将不起作用。@EarlyBird,然后替换“\\”(反斜杠)在结果的非引号字符串的末尾?将立即执行。请记住,不需要替换转义引号的反斜杠,因为它是转义引号,因此被解析为常规引号。