如何在段落的第一行之后剪切字符串

时间:2011-12-08 19:28:11

标签: javascript string cut

我的字符串如下所示:

XXX:Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur cursus lacus sed
justo faucibus id pellentesque nunc porttitor. Sed venenatis tempor dui, nec mattis dolor
ultrices at. Duis suscipit, dolor sed fringilla interdum, magna libero tempor quam, sed
molestie dui urna sed tellus.

如何在第一行添加限制并剪掉字符串? (使用javascript)。

我期望的最终结果如下:

XXX:Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur...

7 个答案:

答案 0 :(得分:55)

var firstLine = theString.split('\n')[0];

答案 1 :(得分:31)

使用可选的限制参数来提高性能

Tomalak他的答案是正确的,但如果您想要仅匹配第一行,则传递可选的第二个limit参数会很有用。像这样你可以防止在返回第一个匹配之前将一个长字符串(有数千行)分割到结尾。

通过将可选limit设置为1,我们会告诉方法在找到第一个匹配项后立即返回结果,结果会提高性能。

var firstLine = theString.split('\n', 1)[0];

详细了解限额参数 for example here in the MDN docs

答案 2 :(得分:11)

如果有实际的行返回,而不仅仅是某种自动换行,你可以这样做:

str = str.substr(0, str.indexOf("\n"));

http://jsfiddle.net/f6uBT/

答案 3 :(得分:1)

你应该使用这个功能

string.split(separator,[limit])

separator - 要分割的字符[“。”或\ r \ n ...] limit - 可选,int来限制max chars

答案 4 :(得分:1)

关于“包装文字”的有趣讨论...... 也许它更像是一个HTML问题,而不是一个javascript问题......

也许您真正想要的是限制HTML元素的高度,并设置“overflow = hidden”。然后它会尽可能多地显示在一行中,并隐藏其余部分。 (但最后你不会得到“......”)

答案 5 :(得分:1)

function getFirstLine(str){
    var breakIndex = str.indexOf("\n");

   // consider that there can be line without a break
    if (breakIndex === -1){
        return str;
    }

    return str.substr(0, breakIndex);
}

getFirstLine('first line\nsecond line'); // first line

getFirstLine('text without line break'); // text without line break

答案 6 :(得分:-3)

var str = document.getElementsByTagName("div")[0].innerHTML;

var firstLine = function(input,cutlength,appendtext){
    if(input.length<=cutlength)
        return input;
    return input.substr(0,cutlength) + appendtext;
}


alert(firstLine(str,50,"..."));

编辑 - 这是一个小提琴链接http://jsfiddle.net/a3C86/