在jQuery的文本的一半添加换行符

时间:2012-06-26 12:05:14

标签: jquery

我想在每个文本块的一半添加换行符<br/>。 这意味着,如果我有这样的推文:“谷歌科学家找到机器学习的证据”就像这样:

"Google scientists find evidence < br/> of machine learning"

如何计算字符串中的单词数,将此数除以2并在jQuery中添加中断?

由于

一个例子:

<span class="tweet-text">Nara Wants To Build A Better Recommendation Platform, Starts With Restaurants And A $4 Million Series...</span>

需要成为

<span class="tweet-text">Nara Wants To Build A Better Recommendation < br/> Platform, Starts With Restaurants And A $4 Million Series...</span>

4 个答案:

答案 0 :(得分:4)

试试这个:

var words = "Google scientists find evidence of machine learning";
var arrofwords = words.split(" ");
var middle = arrofwords.length / 2;
arrofwords.splice(middle,0,"<br/>");
var output = arrofwords.join(" ");

Working demo

它使用空格分割句子,在中间词之后插入<br/>并再次加入....

(感谢@Felix Kling对评论中的建议)

虽然这有一些问题 - 它并没有把<br/>放在你想要的地方......并且对于长句来说效率不高

答案 1 :(得分:2)

我建议计算字符串中的字符数,找到最接近50%点的空格并将字符串分开。然后只需插入一个中断渲染字符串。

答案 2 :(得分:0)

function wordwrap( str, int_width, str_break, cut ) {   // Wraps a string to a given number of characters
    // 
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Nick Callen

    var i, j, s, r = str.split("\n");
    if(int_width > 0) for(i in r){
        for(s = r[i], r[i] = ""; s.length > int_width;
            j = cut ? int_width : (j = s.substr(0, int_width).match(/\S*$/)).input.length - j[0].length || int_width,
            r[i] += s.substr(0, j) + ((s = s.substr(j)).length ? str_break : "")
        );
        r[i] += s;
    }
    return r.join("\n");
}

答案 3 :(得分:0)

当容器小于文本宽度时,此插件会在2中自动破坏您的文本行:

https://github.com/SumoSoft/PrettyBreak