举例:下面代码中通过js对长文本进行分割,请问如何才能在不超过规定字数范围情况下,根据标点符号进行分割,不出现句子中间被分割。
<p id="art">多年以后,奥雷连诺上校站在行刑队面前,准会想起父亲带他去参观冰块的那个遥远的下午。当时,马孔多是个二十户人家的村庄,一座座土房都盖在河岸上,河水清澈,沿着遍布石头的河床流去,河里的石头光滑、洁白,活象史前的巨蛋。这块天地还是新开辟的,许多东西都叫不出名字,不得不用手指指点点。每年三月,衣衫褴楼的吉卜赛人都要在村边搭起帐篷,在笛鼓的喧嚣声中,向马孔多的居民介绍科学家的最新发明。他们首先带来的是磁铁。一个身躯高大的吉卜赛人,自称梅尔加德斯,满脸络腮胡子,手指瘦得象鸟的爪子,向观众出色地表演了他所谓的马其顿炼金术士创造的世界第八奇迹。他手里拿着两大块磁铁,从一座农舍走到另一座农舍,大家都惊异地看见,铁锅、铁盆、铁钳、铁炉都从原地倒下,木板上的钉子和螺丝嘎吱嘎吱地拼命想挣脱出来,甚至那些早就丢失的东西也从找过多次的地方兀然出现,乱七八糟地跟在梅尔加德斯的魔铁后面。“东西也是有生命的,”吉卜赛人用刺耳的声调说,“只消唤起它们的灵性。”霍·阿·布恩蒂亚狂热的想象力经常超过大自然的创造力,甚至越过奇迹和魔力的限度,他认为这种暂时无用的科学发明可以用来开采地下的金子。
</p>
<script>
//文字获取
var text=document.getElementById("art").innerText;
var texts=Math.ceil(text.length/150);
var textarr=new Array();
//文字分段
for(i=0;i<=texts;i++){
textarr[i]=text.substr(i*150,150);
var m = textarr[i].split(",");
document.write(m+"<br/>");
}
</script>
用标点分号切割字符,然后依次累加数组项,超过就放到下一个项中,示例如下
<p id="art">
多年以后,奥雷连诺上校站在行刑队面前,准会想起父亲带他去参观冰块的那个遥远的下午。当时,马孔多是个二十户人家的村庄,一座座土房都盖在河岸上,河水清澈,沿着遍布石头的河床流去,河里的石头光滑、洁白,活象史前的巨蛋。这块天地还是新开辟的,许多东西都叫不出名字,不得不用手指指点点。每年三月,衣衫褴楼的吉卜赛人都要在村边搭起帐篷,在笛鼓的喧嚣声中,向马孔多的居民介绍科学家的最新发明。他们首先带来的是磁铁。一个身躯高大的吉卜赛人,自称梅尔加德斯,满脸络腮胡子,手指瘦得象鸟的爪子,向观众出色地表演了他所谓的马其顿炼金术士创造的世界第八奇迹。他手里拿着两大块磁铁,从一座农舍走到另一座农舍,大家都惊异地看见,铁锅、铁盆、铁钳、铁炉都从原地倒下,木板上的钉子和螺丝嘎吱嘎吱地拼命想挣脱出来,甚至那些早就丢失的东西也从找过多次的地方兀然出现,乱七八糟地跟在梅尔加德斯的魔铁后面。“东西也是有生命的,”吉卜赛人用刺耳的声调说,“只消唤起它们的灵性。”霍·阿·布恩蒂亚狂热的想象力经常超过大自然的创造力,甚至越过奇迹和魔力的限度,他认为这种暂时无用的科学发明可以用来开采地下的金子。
</p>
<script>
//文字获取
var text = document.getElementById("art").innerText;
var textarr = new Array();
var len = 150;//句子最大长度
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>'));
document.write('<br><br>' + JSON.stringify(textarr.map(i => i.length)));
</script>
可以采用正则进行分割句子。
var mnName = "你好,内蒙。蒙古";
mnName .split(/[,᠃.。]/)
// 其中的分隔字符需要填写在 [] 中。
// 其中 ᠃ 是蒙文句号