一尘不染

如何获得文本区域中的行数?

javascript

我想计算一个文本区域中的行数,例如:

line 1
line 2
line 3
line 4

应该最多计数4行。基本上按一次Enter键即可将您转到下一行

以下代码无法正常工作:

var text = $("#myTextArea").val();   
var lines = text.split("\r");
var count = lines.length;
console.log(count);

无论有多少行,它始终为“ 1”。


阅读 311

收藏
2020-05-01

共1个答案

一尘不染

我已经将line和lineCount方法实现为String原型:

String.prototype.lines = function() { return this.split(/\r*\n/); }
String.prototype.lineCount = function() { return this.lines().length; }

显然,在IE9中split方法不会在字符串的末尾(或textarea的innerText属性)计算回车符和/或换行符,但在Chrome
22中会对其进行计数,从而产生不同的结果。

到目前为止,当浏览器不是Internet Explorer时,我已经通过从行数中减去1来做到这一点:

String.prototype.lineCount = function() { return this.lines().length - navigator.userAgent.indexOf("MSIE") != -1); }

希望有人有更好的RegExp或其他解决方法。

2020-05-01