如何将字符串中的每个带引号的句子放入数组(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,然后替换“\\”(反斜杠)在结果的非引号字符串的末尾?将立即执行。请记住,不需要替换转义引号的反斜杠,因为它是转义引号,因此被解析为常规引号。