在做网站过程,遇到大段的文本内容,不想手工排版,可以通过js根据字数给长文本进行自动分段。但是自动分段过程中容易出现句子中间被分割开,所以这里可以加入标点符号判断,然后进行自动分段。
具体实现方法如下:
<p id="content">
北冥有鱼,其名为鲲。鲲之大,不知其几千里也;化而为鸟,其名为鹏。鹏之背,不知其几千里也;怒而飞,其翼若垂天之云。是鸟也,海运则将徙于南冥。
南冥者,天池也。《齐谐》者,志怪者也。《谐》之言曰:“鹏之徙于南冥也,水击三千里,抟扶摇而上者九万里,去以六月息者也。”野马也,尘埃也,生物之以息相吹也。
天之苍苍,其正色邪?其远而无所至极邪?其视下也,亦若是则已矣。且夫水之积也不厚,则其负大舟也无力。覆杯水于坳堂之上,则芥为之舟,置杯焉则胶,水浅而舟大也。
风之积也不厚,则其负大翼也无力。故九万里,则风斯在下矣,而后乃今培风;背负青天,而莫之夭阏者,而后乃今将图南。
蜩与学鸠笑之曰:“我决起而飞,抢榆枋而止,时则不至,而控于地而已矣,奚以之九万里而南为?”
适莽苍者,三餐而反,腹犹果然;适百里者,宿舂粮;适千里者,三月聚粮。之二虫又何知!
</p>
<script>
//文字获取
var text = document.getElementById("content").innerText;
var textarr = new Array();
var len = 60;//句子最大长度
var arr = text.split(/([。”?])/);//若有其他标点符号作为语句结束,在这里增加即可,比如、;:
var l = 0, s = '';
//文字分段
for (i = 0; i < arr.length; i++) {
if (l + arr[i].length < len) {
s += arr[i];
l += arr[i].length;
}
else {
textarr.push(s);
l = arr[i].length;
s = arr[i];
}
}
if (s != '') textarr.push(s);
document.write(textarr.join('<br><br>'));
document.write('<br><br><hr><br>每段字数分别为:' + JSON.stringify(textarr.map(i => i.length))+' 字。');
</script>
//方法二,优化引号开头文本显示
<script>
//文字获取
var text = document.getElementById("content").innerText;
var textarr = new Array();
var len = 60;//句子最大长度
var arr = text.split(/([。!?])/);//若有其他标点符号作为语句结束,在这里增加即可,比如、;:
var l = 0, s = '';
//文字分段
for (i = 0; i < arr.length; i++) {
if (l + arr[i].length < len) {
s += arr[i];
l += arr[i].length;
}
else {
if (arr[i].startsWith('”')) {
s += '”';
arr[i] = arr[i].substring(1);
}
textarr.push(s);
l = arr[i].length;
s = arr[i];
}
}
if (s != '') textarr.push(s);
document.write('<br><br><hr>')
document.write(textarr.join('<br><br>'));
document.write('<br><br><hr><br>每段字数分别为:' + JSON.stringify(textarr.map(i => i.length))+' 字。');
</script>通过上面的代码所示方法就可以通过js根据字数和标点符号给长文本自动分段了。具体效果可参考下图1和图2:

图1

图2
通过上面的图1和图2就可以看到实际的分割效果了,如果你在建站过程中也遇到了类似的问题,就用这个方法试试看吧。
如果内容有帮助,就点个赞吧!
