js根据字数和标点符号给长文本自动分段的方法

在做网站过程,遇到大段的文本内容,不想手工排版,可以通过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:

长文本未使用js自动分段前

图1

长文本使用js自动分段效果

图2

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

如果内容有帮助,就点个赞吧!

转载注明出处:http://www.12564.cn/show-242.html

如有疑问请联系 QQ:644233191   微信:zw1688k