尽量把大内容中双引号中的白色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, '"');
此正则表达式使用交替:
"\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*"
替换成 ""
吗?
我想清理一些文字:
错误内容:...“跟随我的领导”...(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, '"');
此正则表达式使用交替:
"\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*"
替换成 ""
吗?