Ответ 1
var firstLine = theString.split('\n')[0];
У меня есть строка, показанная ниже:
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...
var firstLine = theString.split('\n')[0];
Tomalak его ответ правильный, но если вы действительно хотите соответствовать только первой строке, полезно передать необязательный второй параметр limit
. Подобным образом вы предотвращаете разделение длинной строки (с тысячами строк) до конца до возвращения первого совпадения.
При установке необязательного limit
в 1
мы сообщаем методу вернуть результат, как только будет найдено первое совпадение с повышенной производительностью.
var firstLine = theString.split('\n', 1)[0];
Подробнее о пределе param например, здесь, в документах MDN
Если есть фактические строки, а не просто какая-то автоматическая упаковка, вы можете сделать это:
str = str.substr(0, str.indexOf("\n"));
Интересная дискуссия о "обернутом тексте"... Возможно, это больше проблема HTML, чем проблема с javascript...
Возможно, вы действительно хотите ограничить высоту элемента HTML и установить "overflow = hidden". Затем он отобразит столько, сколько может вместить в одну строку, и скрыть остальные. (но вы не получите маленького "..." в конце)
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
эту функцию следует использовать
string.split(разделитель, [предел])
separator - char для разделения [ "." или \r\n...] limit - необязательный, int для ограничения максимальных символов
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/