我有这个HTML(例如-文本的长度可能会有所不同):
$scope.countFilteredItems = function() {
var filteredItems = $filter('filter')($scope.items, $filterItems(someArgument));
var count = 0;
if (filteredItems !== undefined && filteredItems !== null) {
count = filteredItems.length;
}
return count;
};
我想抓住这段文本的前两个句子,并使用JavaScript / jQuery提取它们。此外,我还想提取其余文本并将其放入自己的元素中。
所以基本上我想得出以下结果:
<p>Stockholm is a city in Sweden. Moscow is a city in Russia. Here is Berlin, it's the capital of Germany.</p>
和
<p>Stockholm is a city in Sweden. Moscow is a city in Russia.</p>
到目前为止,我只能使用以下内容获得文本的第一句:
<p>Here is Berlin, it's the capital of Germany.</p>
结果显示:“斯德哥尔摩是瑞典的一座城市”-也没有点。我也想将其包括在内。
如简介中所述,这些文本是动态的,且长度不同。
如何实现以上目标?
谢谢!
答案 0 :(得分:1)
一个选项是:
$('#myDiv > p').each(function() {
var ss = this.textContent.split('.');
var f = ss.slice(0, 2).join('.');
var s = ss.slice(2).join('.');
$(this).text(f);
$('<p>').text(s).insertAfter(this);
})
答案 1 :(得分:0)
您可以使用函数获取第二个索引处的点,然后在该索引处分割字符串:
let str = "<p>Stockholm is a city in Sweden. Moscow is a city in Russia. Here is Berlin, it's the capital of Germany.</p>"
let index = nthIndex(str, ". ", 2);
let parts = [str.substring(0, index+1)+"</p>" ,"<p>"+str.substring(index+2)]
console.log(parts)
function nthIndex(str, pat, n){
var L= str.length, i= -1;
while(n-- && i++<L){
i= str.indexOf(pat, i);
if (i < 0) break;
}
return i;
}