43

我有如下所示的字符串:

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...
4

7 回答 7

97
var firstLine = theString.split('\n')[0];
于 2011-12-08T19:30:28.137 回答
53

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

Tomalak 他的回答是正确的,但如果您真的只想匹配第一行limit,则传递可选的第二个参数将很有用。像这样,您可以防止在返回第一个匹配项之前将长字符串(包含数千行)拆分到最后。

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

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

阅读有关限制参数的更多信息,例如在 MDN 文档中

于 2016-05-10T08:26:09.230 回答
12

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

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

http://jsfiddle.net/f6uBT/

于 2011-12-08T19:32:46.107 回答
3
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
于 2015-05-04T15:07:24.580 回答
1

你应该使用这个功能:

string.split(separator, [limit])

分隔符 - 要拆分的字符 ["." 或 \r\n ...] 限制 - 可选,int 以限制最大字符

于 2011-12-08T19:36:00.510 回答
1

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

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

于 2014-01-31T19:14:39.567 回答
-2
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/

于 2011-12-08T19:31:33.583 回答