如何将regexp与.slice()一起使用,以便将标点符号保存在每一行的末尾?可以说我有一个看起来像这样的描述:
<div class="desc">We have text. About specific product? Or feature!</div>
我希望它看起来像这样:
<div class="desc">
<ul>
<dd>We have text.</dd>
<dd>About specific product?</dd>
<dd>Or feature!</dd>
</ul>
对我来说,jQuery在这种特定情况下是可以的,所以我建立了这个:
jQuery(function() {
var description = jQuery('div.desc');
var sentences = description.text().split(/\.|\?|\!\s+/g),
$wrapper = description.empty();
jQuery.each(sentences, function(_, sentence) {
jQuery('<dd>', {text: sentence}).appendTo($wrapper);
});
jQuery('.desc > dd').wrapAll("<ul></ul>");
jQuery('.desc > ul > dd:last-child').remove();
});
它可以很好地执行EXEPT->按“”进行切片。 “!” “?” -删除这些标志。我需要保留它们。
我还考虑过类似的事情:
var myStr = 'We have text. About specific product? Or feature!';
var strArray = myString.split('.');
之后,我可以使用它(例如):
alert('!' + strArray[1]);
但事实是描述总是不同的。因此,如果在一页上显示“?”符号将在第一个句子的末尾->第二页将在第六个句子之后出现。
答案 0 :(得分:3)
您可以使用match
代替split
。
var string = 'We have text. About specific product? Or feature!';
console.log(string.match(/.*?[.!?](\s+|$)/g));
答案 1 :(得分:-1)
如果您在正则表达式中使用捕获组,它将保留匹配的字符。
let myStr = 'We have text. About specific product? Or feature!';
let strArray = myStr.split(/([.?!])/);
console.log(strArray );