在javascript中将字符串拆分为句子

Split string into sentences in javascript

本文关键字:拆分 句子 字符串 javascript      更新时间:2023-09-26

我正在尝试将字符串拆分为一个行数组,但它不起作用,这是我到目前为止尝试过的 -

value = '<p>line1</p><p>line2</p><p>line3</p>';
var lines = value.split('/<p>|<'/p>/');
console.log(lines.length);
//expecting 3 but output is 1

你做错了。以这种方式使用它:

value = '<p>line1</p><p>line2</p><p>line3</p>';
var lines = value.split('</p><p>');
console.log(lines.length);

另外,要删除第一个和最后一个<p></p>,请使用您拥有的正则表达式。对于那些要求:

value = '<p>line1</p><p>line2</p><p>line3</p>';
value = value.replace(/^<p>|<'/p>$/g, "");
var lines = value.split('</p><p>');
console.log(lines.length);
console.log(lines);

另一种方法是使用本机选择器(此实现适用于IE9+)

这个想法是将你的 dom 字符串保存在一个实际的 html 文档正文中,并使用 querySelectorAll 来获取段落,将NodeList转换为ArrayquerySelectorAll 返回的类型)。然后使用高阶函数Array.prototype.map构建所需的行数组。

这可能看起来矫枉过正,但如果您的某些段落碰巧具有额外的属性,这是强大的。

var sandbox = document.implementation.createHTMLDocument();
sandbox.body.innerHTML = '<p>line1</p><p>line2</p><p>line3</p>';
var paragraphs = Array.prototype.slice.call(sandbox.querySelectorAll('p'));
var lines = paragraphs.map(function (node) {
    return node.innerText;
});

你可以用正则表达式来做到这一点。

value = '<p>line1</p><p>line2</p><p>line3</p>';
var v = value.replace(new RegExp("<p>(.*?)<'/p>", "g"), '$1'n');
var lines = v.split("'n");
lines.splice(-1);
console.log(lines);

https://jsfiddle.net/goe14nkf/

这将正确返回您的行:["line1", "line2", "line3"]