如何在javascript中计算字符串中的空行数
我试图数一数字符串中的所有空行。我目前的工作类型:如何在javascript中计算字符串中的空行数,javascript,arrays,regex,newline,Javascript,Arrays,Regex,Newline,我试图数一数字符串中的所有空行。我目前的工作类型: function count_empty(text) { var regex = /\r\n?|\n/g; var lines = text.split(regex); var sep = []; $.each(lines, function(k, val) { if(!val) { //sentence sep.push(val);
function count_empty(text) {
var regex = /\r\n?|\n/g;
var lines = text.split(regex);
var sep = [];
$.each(lines, function(k, val) {
if(!val) {
//sentence
sep.push(val);
}
});
return sep.length;
}
…但我真的认为,通过这样一种更好的方法可以实现:
function count_empty(text) {
return (text.match(/\r\n?|\n/g) || []).length;
}
当然,第二个备选方案中的正则表达式应该进行修改,以实际满足要求。所以问题是:在第二种方法中,我应该使用什么样的正则表达式来检索空行呢?
一个注意事项:如果一行只包含空格,它将被视为空行
此textarea的字符串应随函数返回3
<textarea id="test">first line
third line
</textarea>
第一行
第三行
谢谢 你可以这么做
function count_lines(txt){
return (txt.match(/\n(?=\n/g)) || []).length;
}
上面所做的是匹配\n
,然后是另一个\n
,然后返回匹配的长度
如果为正则表达式启用多行模式,
m
,则可以匹配空行,^$
,并计算找到的匹配数。请注意,[\t]*
将匹配零个或多个空格或制表符
function count_lines(text){
return text ? (text.match(/^[ \t]*$/gm) || []).length : 0;
}
这应该非常快,因为在正则表达式之后不需要任何后处理
有关注释的演示,请参见。这是什么
function count_empty(text) {
return (text.match(/(^[ \t]*(\n|$))/gm) || []).length;
}
嗨!如果我在字符串末尾加了一些空行,它们就不会被这个正则表达式计算在内。@andufo,谢谢。看起来
\s*
量词正在使用相邻的换行符。我已经根据需要更新了正则表达式。刚刚用你的正则表达式尝试了很多场景,看起来它像预期的那样工作。谢谢将
视为1,只处理空格和制表符,而不是所有空格。@Xotic750您是对的,忘记在文本区域为空时测试该情况。只有两件事:1)我添加了润色返回值,以防没有匹配项(以避免js错误):返回(text.match(/\n(?=\n)/g)| |[])length代码>和2)由于某种原因,如果我在字符串的末尾留下一行空行,它就不会被计数。@andufo它会被计数。不是吗?尝试在演示中添加一行额外内容。它应该显示上次更新后的某个地方缺少括号:s@andufo是的。输入错误:p感谢您的帮助,必须使用@GioBorje的解决方案,它在所有情况下都有效。这个
应该是1还是0,也就是说,一行必须由\r\n
终止吗?当你说空格时
你的意思是确切的还是任何空格?@Xotic750 hi!在这种情况下,计数应该是0,我指的是空格。它不是计算最后一次输入(如果在末尾添加了一个空行)true,我已经更新了,以防您想尝试其他方法。谢谢:)