计算不包括空格的段落数

时间:2014-03-08 17:28:39

标签: javascript regex

我目前正在编写一个代码来计算段落数量。我无法解决的唯一问题是每个段落之间的空格也被计算在内。例如,下面的示例应该返回3,而是返回5,因为空回车。

sentence 123
sentence 234


sentence 345

Full Fiddle

是否有可以解决此问题的正则表达式组合,或者我是否必须编写条件语句。感谢

2 个答案:

答案 0 :(得分:2)

明确排除空行:

function nonblank(line) {
    return ! /^\s*$/.test(line);
}

.. the_result_of_the_split.filter(nonblank).length ..

修改过的小提琴:http://jsfiddle.net/Qq38a/

答案 1 :(得分:1)

您可以将正则表达式更改为liitle:

.split(/[\r\n]+/)
正则表达式中的

+字符

  

将前一个字符匹配1次或更多次。相当于{1,}。

演示:http://jsfiddle.net/ahRHC/1/

UPD

改进的解决方案将使用另一个使用否定前瞻的正则表达式:

`/[\r\n]+(?!\s*$)/` 

这意味着:只有在没有任意数量的空白字符和行尾的情况下才匹配新行和回车符。

演示2:http://jsfiddle.net/ahRHC/2/

UPD 2决赛

为了防止regexp过于复杂并解决引导新行的问题,在分割值之前还有另一种使用$.trim的解决方案:

function counter(field) {
    var val = $.trim($(field).val());
    var lineCount = val ? val.split(/[\r\n]+/).length : 0;
    jQuery('.paraCount').text(lineCount);
}

演示3:http://jsfiddle.net/ahRHC/3/