Параграфы в JavaScript
Знаете ли вы, есть ли простой способ подсчета абзацев в текстовой области, используя только javascript?
Спасибо,
4 ответа
Решение
Попробуй это:
document.getElementById('textarea_id').value.replace(/\n$/gm, '').split(/\n/).length;
Это будет игнорировать пустые строки (см. Ответ @Sean Vieira)
var my_data = document.getElementById("txt_area_in_question").value;
alert("The total paragraphs in the text area are: "+
my_data.split("\n\n").length);
Теперь, это не учитывает несколько новых строк без текста... так:
Some text
Some more text
Some more text
вернусь 5
скорее, чем 3
Решение состоит в том, чтобы убрать все пробелы и вернуть то, что осталось:
var my_data = document.getElementById("txt_area_in_question").value;
my_data = my_data.split("\n\n");
var g = my_data.length;
var i = 0;
var strip_whitespace = /\s+/gi;
while (g >=0) {
g--;
var tmp = my_data[g];
tmp = tmp ? tmp .replace(strip_whitespace,"") : tmp;
if( tmp && tmp.length > 1 ) {
i++;
}
}
alert("The total paragraphs in the text area are: "+i); //Will properly alert 3
Смотрите: http://jsfiddle.net/UBWpJ/
Вы можете улучшить ответ Шона Виеры, разделившись на (\n *\n)/g
вместо просто \n\n
тогда у вас нет проблем с пробелами между абзацами
const countParagraphs = (text) =>{
return text.split(/\n\s*\n/).filter(Boolean).length;
}
Эта функция эффективно подсчитывает абзацы в тексте, разделяя текст на основе наличия пустых строк или отступов, а затем отфильтровывая все пустые абзацы перед возвратом счетчика.