尽量把大内容中双引号中的白色space清空

Try to clean white space in double quote in big content

我想清理一些文字:

错误内容:...“跟随我的领导”...(space 在 'Follow' 之前)

好内容 : ... "Follow my lead" ...

对于双引号中的每个内容,我想清除白色space。 非常感谢!

我的内容测试:

就是这样。 “使用自助结账的商店的平均访问时间约为一分钟。我们希望将这一步行时间减少到 20 秒,”AH To Go 董事总经理 Jan-Willem Dockheer 解释说,“Het Parol ”。显然,它奏效了:测试阶段确认购买三种产品可以在十秒内离开商店。

代码:

var flag = 0;

$("#launchCleaner").click(function() {

  var loadOrigins =$('#txtorigines').val();
  //clean1 = loadOrigins.trim();
    clean1 = loadOrigins.replace(/" /g, '"');
    clean2 = clean1.replace(/ "/g, '"');
    clean3 = clean2.replace(/\./g, '. ');
  $("#txtclean").append(clean3);
});
textarea{
    width: 70%;
    float: left;
    margin: 0 1%;
    border-radius: 3px;
    height: 250px;
    resize:none
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="txtorigines"></textarea>
<textarea id="txtclean"></textarea>
<button type="button" id="launchCleaner">Nettoyer le texte</button>

如果您的报价是平衡的并且没有报价转义,那么您可以使用此代码:

let re = /"\s+(?!(?:(?:[^"]*"){2})*[^"]*$)|\s+"(?=(?:(?:[^"]*"){2})*[^"]*$)/gm;
str = str.replcae(re, '"');

RegEx Demo

此正则表达式使用交替:

  • "\s+:匹配引号后跟 1+ 空格(开始引号)
  • (?!(?:(?:[^"]*"){2})*[^"]*$):前瞻断言我们前面没有偶数个引号
  • |: 或
  • \s+":匹配 1+ 个空格后跟引号(结束引号)
  • (?=(?:(?:[^"]*"){2})*[^"]*$):前瞻断言我们前面有偶数个引号

问题是您没有跟踪引用文本的内部或外部。在这种情况下使用正则表达式只会使问题复杂化(在我看来)。

我会这样做:拆分引号,并跟踪是否在引号之外(最初:是,然后切换),然后从那里构造新字符串。

$("#launchCleaner").click(function() {
  var text = $('#txtorigines').val();
  var fragments = text.split('"');
  var newText = "";
  var outsideOfQuotes = true;
  for (var i = 0; i < fragments.length; i++) {
    if (outsideOfQuotes)
      newText += fragments[i];
    else
      newText += '"' + fragments[i].trim() + '"';
    outsideOfQuotes = !outsideOfQuotes;
  }
  $("#txtclean").append(newText);
});
textarea {
  width: 70%;
  float: left;
  margin: 0 1%;
  border-radius: 3px;
  height: 60px;
  resize: none
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="txtorigines">Text to " clean up " as an " example ", with some "good text" as well.</textarea>
<textarea id="txtclean"></textarea>
<button type="button" id="launchCleaner">Nettoyer le texte</button>

在与@anubhava 相同的假设下

你不能直接 "s*(.+?)\s*" 替换成 "" 吗?