Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery/Javascript将文本节点拆分为两个或三个?_Javascript_Jquery - Fatal编程技术网

jQuery/Javascript将文本节点拆分为两个或三个?

jQuery/Javascript将文本节点拆分为两个或三个?,javascript,jquery,Javascript,Jquery,我有一个div,假设有3行文本。我想把这个div一分为二,假设我有150个字符,我想把它一分为二,这样我就可以得到两个相等的部分 让我再解释一下: 下面是一个文本节点。。。stackoverflow wysiwyg容器中有6行: <p>Brown the roast on all sides in a large lightly oiled skillet over high heat, before adding to the slow cooker. While meat is

我有一个div,假设有3行文本。我想把这个div一分为二,假设我有150个字符,我想把它一分为二,这样我就可以得到两个相等的部分

让我再解释一下:

下面是一个文本节点。。。stackoverflow wysiwyg容器中有6行:

<p>Brown the roast on all sides in a large lightly oiled skillet over high heat, before 
adding to the slow cooker. While meat is browning. Prepare vegetables by washing and paring 
potatoes, carrots, and parsnips. Cut into pieces, approximately 2 inches (5 cm) in length. 
Place in the bottom, and up the sides, of a slow cooker. Add onions, and place pot roast on 
top. Combine cranberry sauce, orange juice, rind and cinnamon and pour over the meat. Cover 
and cook on low for 8-10 hours. Yield: 6 servings.</p>
第2组

放在慢炖锅的底部和两侧上方。加入洋葱,放在烤肉盘上
顶部混合蔓越莓酱、橙汁、果皮和肉桂,倒入肉上。掩护
在低温下煮8-10小时。产量:6份

有办法做到这一点吗?

您可以使用

var text = $('div').text();
var tokens = text.split(' ');
var n = Math.floor(tokens.length/2);
var html = '<p>'+tokens.slice(0, n).join(' ') + '</p><p>' + tokens.slice(n+1, tokens.length).join(' ') + '</p>';
$('div').html(html);
var text=$('div').text();
变量标记=text.split(“”);
var n=数学下限(令牌长度/2);
var html=''+tokens.slice(0,n).join('')+'

'+tokens.slice(n+1,tokens.length).join('')+'

'; $('div').html(html);

请注意,为了获得更好的结果,尤其是关于配方,您还可以按点拆分:

var text = $('#a').text();
var tokens = text.split('.');
var n = Math.floor(tokens.length/2);
var html = '<p>'+tokens.slice(0, n).join('.') + '.</p><p>' + tokens.slice(n+1, tokens.length).join('.') + '</p>';
$('#a').html(html);​
var text=$('#a').text();
var tokens=text.split('.');
var n=数学下限(令牌长度/2);
var html=''+tokens.slice(0,n).join('.)+'.

'+tokens.slice(n+1,tokens.length).join('.)+'

'; $('a').html(html);​

现在,很可能你不希望两段中的句子数量相同,但字符长度大致相同。那么,下面是您可以做的:

var text = $('#a').text();
var sentences = text.split('.');
var sum = 0;
var lengths = sentences.map(function(v){sum+=v.length; return v.length});
var n = 0;
var ts = 0;
while (ts<sum/2) ts += lengths[n++];
var html = '<p>'+sentences.slice(0, n-1).join('.') + '.</p><p>' + sentences.slice(n, sentences.length).join('.') + '</p>';
$('#a').html(html);
var text=$('#a').text();
变量句子=text.split('.');
var总和=0;
var length=句子.map(函数(v){sum+=v.length;返回v.length});
var n=0;
var-ts=0;

而(tsI将
.split()
句点上的字符串,假设这会将文本块分割成句子,然后将几个句子重新组合成更小的段落。但是,如果不阅读文本,就无法知道最好的、最符合语法的方法是什么。这是计算机无法完成的事情。最初的实现以sk结尾在某些情况下ipping一个单词。以下更改修复了它:tokens.slice(0,n).join(“”)用于第一个,tokens.slice(n,tokens.length).join(“”)用于第二个
var text = $('#a').text();
var tokens = text.split('.');
var n = Math.floor(tokens.length/2);
var html = '<p>'+tokens.slice(0, n).join('.') + '.</p><p>' + tokens.slice(n+1, tokens.length).join('.') + '</p>';
$('#a').html(html);​
var text = $('#a').text();
var sentences = text.split('.');
var sum = 0;
var lengths = sentences.map(function(v){sum+=v.length; return v.length});
var n = 0;
var ts = 0;
while (ts<sum/2) ts += lengths[n++];
var html = '<p>'+sentences.slice(0, n-1).join('.') + '.</p><p>' + sentences.slice(n, sentences.length).join('.') + '</p>';
$('#a').html(html);