Как обрезать строку после первой строки в абзаце - PullRequest
25 голосов
/ 08 декабря 2011

У меня есть строка, показанная ниже:

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 ]

58 голосов
/ 08 декабря 2011
var firstLine = theString.split('\n')[0];
31 голосов
/ 10 мая 2016

Используйте необязательный параметр limit для увеличения производительности

Томалак, его ответ правильный, но если вы действительно хотите соответствовать только первой строке , будет полезно пропустить дополнительную секундуlimit параметр.Таким образом вы предотвращаете, что длинная строка (с тысячами строк) будет разбита до конца, прежде чем будет возвращено первое совпадение.

При установке необязательного значения limit на 1 мы сообщаем методу, чтобы он возвращал результат, как только будет найдено первое совпадение с повышенной производительностью.

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

Чтениеподробнее о предельном параметре , например, здесь, в документах MDN

11 голосов
/ 08 декабря 2011

Если есть реальные возвраты строк, а не просто какая-то автоматическая перенос, вы можете сделать это:

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

http://jsfiddle.net/f6uBT/

1 голос
/ 04 мая 2015
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
1 голос
/ 31 января 2014

Интересная дискуссия про "завернутый текст" ... Может быть, это больше проблема HTML, чем проблема JavaScript ...

Может быть, вам действительно нужно ограничить высоту элемента HTML и установить "overflow = hidden". Тогда он будет отображать столько, сколько может поместиться в одну строку, а остальные спрятать. (но вы не получите маленькое "..." в конце)

1 голос
/ 08 декабря 2011

Вы должны использовать эту функцию

string.split (разделитель, [предел])

separator - символ для разделения ["." Или \ r \ n ...] limit - необязательно, int для ограничения макс. символов

0 голосов
/ 08 декабря 2011
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,"..."));

edit - вот ссылка на скрипку http://jsfiddle.net/a3C86/

...