双引号之间的JavaScript文本 [英] JavaScript text between double quotes

查看:178
本文介绍了双引号之间的JavaScript文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用JavaScript在双引号之间获取文本。我在网上找到了类似 title.match(/\".*?\"/);的内容,但问题是有时我在双引号之间有文字但有时没有引号。我的意思是,有时我收到的字符串如下: Neque porro quisquam est qui dolorem ipsum 有时字符串如下: Nequeporro quisquam estqui dolorem ipsum 。问题是,当我有包含双引号的文本时,我想要检索它们之间的文本,但是当它们不存在时,我想要整个文本。
另外我观察到 string.indexOf(\)不起作用,我真的不知道如何解决这个问题。谢谢。

I would like to get the text between double quotes using JavaScript. I found online something like title.match(/".*?"/); but the thing is that sometimes I have text between double quotes but sometimes there are no quotes. What I am saying is that sometimes I receive strings like: Neque porro quisquam est qui dolorem ipsum and sometimes strings like: Neque "porro quisquam est" qui dolorem ipsum. The thing is, when I have text containing double quotes I want to retrieve the text between them but when they aren't present, I'd like the whole text. Also I have observered that string.indexOf("\"") does not work and I don't really know how to approach this problem. Thanks.

推荐答案

尝试:

let str1 = 'Neque porro quisquam est qui dolorem ipsum';
let str2 = 'Neque "porro quisquam est" qui dolorem ipsum';
let str3 = 'Neque "porro';
let str4 = 'Neque "porro" quisquam "est" qui dolorem ipsum';

function extractFirstText(str){
  const matches = str.match(/"(.*?)"/);
  return matches
    ? matches[1]
    : str;
}


function extractAllText(str){
  const re = /"(.*?)"/g;
  const result = [];
  let current;
  while (current = re.exec(str)) {
    result.push(current.pop());
  }
  return result.length > 0
    ? result
    : [str];
}

然后

extractFirstText(str1);
//Neque porro quisquam est qui dolorem ipsum

extractFirstText(str2);
//porro quisquam est

extractText(str3);
//Neque "porro

extractText(str4);
//porro

extractAllText(str1);
//Array [ "Neque porro quisquam est qui dolorem ipsum" ]

extractAllText(str2);
//Array [ "porro quisquam est" ]

extractAllText(str3);
//Array [ "Neque \"porro" ]

extractAllText(str4);
//Array [ "porro", "est" ]

编辑重新设计以考虑关于匹配多个子字符串的丢弃编辑中的@AshishMaity注释,以及@JosephCho关于原始分解的注释,以防有单引号(在上面的情况下为str3)

EDIT reworked to take into account both @AshishMaity comment in a discarded edit about matching more than one substring, and @JosephCho comment about the original breaking in case there is a single quote (str3 in the case above)

这篇关于双引号之间的JavaScript文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆