如何解决删除段落中的特定单词并使用JS和正则表达式修改后的第一个单词?
使用JavaScript / jQuery和RegEx,我想从下面的段落中删除单词'Integer'的所有实例,并且删除的单词后的第一个单词应大写。
Lorem ipsum dolor坐着,安全奉献精英。南埃利特 Massa,Turpis vel的最高峰,iaculis nisl。 Nullam pulvinar mi euligus posuere,舌状门Portugal。 整数 quis nunc neque。 Etiam sollicitudin diam在dolor sagittis pellentesque中。 Nunc胎盘 sollicitudin purus。普罗蒂斯·马蒂斯(Proin mattis), urna erat mollis sapien等整数 ligula 特鲁斯,最大证人,优生结果无效。
到目前为止,我尝试删除所需单词:
var modified = $(".paragraph").html();
modified = modified.replace(/Integer\s/g,'');
但是在那之后,我不知道如何动态访问下一个单词(从上面的示例文字单词“ quis”和“ ligula”开始)并将其设置为大写。需要注意的是:需要删除的词始终是相同的,但是后面的词总是不同的。
解决方法
为确保每次删除 Integer 后都得到大写字母,请使用以下命令:
modified = modified.replace(/Integer\s+(\w)/g,function(fullMatch,capturedGroup) {
return capturedGroup.toUpperCase();
});
注意:这甚至可以匹配整数,后跟大写单词。如果只想选择Integer实例后跟小写单词,则在上面的正则表达式中使用[a-z]
代替\w
。
不是正则表达式,但是这一行可以满足您的目的。
let str = `Lorem ipsum dolor sit amet,consectetur adipiscing elit. Nam elit
massa,maximus in turpis vel,viverra iaculis nisl. Nullam pulvinar mi eu metus
posuere,a porta ligula feugiat. Integer quis nunc neque. Etiam sollicitudin diam
in dolor sagittis pellentesque. Nunc placerat sollicitudin purus. Proin mattis,quam sit amet pellentesque blandit,urna erat mollis sapien,et vestibulum nunc
mised orci. Integer ligula tellus,maximus id orci quis,euismod consequat nulla.`;
str.split(/Integer\ /g).map(part=>{return part.charAt(0).toUpperCase() + part.substr(1)}).join("")
,
也许有一种直接替换的方法,但是我可能会这样:
let textResult;
do {
textResult = /Integer\s(.)/gs.exec(modified);
if (!textResult || !textResult[1]) {
textResult = null;
continue;
}
modified = modified.replace('Integer ' + textResult[1],textResult[1].toUpperCase());
} while (!!textResult);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。