如何检测换行符在文本区域输入?如何检测换行符在文本区域输入?(How to detect line

2019-05-17 12:20发布

什么是检查换行文本区域的值,然后计算发生的次数,如果有的话最好方法是什么?

我有我的网页中的窗体上的文本区域。 我使用JavaScript来获取文本区域的值,然后检查其长度。

enteredText = textareaVariableName.val();
characterCount = enteredText.length; // One line break entered returns 1

如果用户输入文本区域换行符我上面的计算给出了断行的长度为1。但是我需要给换行符是2的长度,所以我需要检查线路中断和出现的次数,然后添加此上的总长度。

什么我想要实现实例

enteredText = textareaVariableName.val();
characterCount = enteredText.length + numberOfLineBreaks;

问这个问题之前,我的解决办法如下:

enteredText = textareaVariableName.val();
enteredTextEncoded = escape(enteredText);
linebreaks = enteredTextEncoded.match(/%0A/g);
(linebreaks != null) ? numberOfLineBreaks = linebreaks.length : numberOfLineBreaks = 0;

我看得出来,编码文字和检查%0A有点啰嗦,所以我一些更好的解决方案了。 感谢您的所有建议。

Answer 1:

可以使用match在包含换行符的字符串,而该阵列中的元件的数目应当对应于换行的数目。

enteredText = textareaVariableName.val();
numberOfLineBreaks = (enteredText.match(/\n/g)||[]).length;
characterCount = enteredText.length + numberOfLineBreaks;

/\n/g是一个正则表达式的意思是“查找字符\n (换行符),并做到这一点全局(在整个字符串)。

||[]部分是以防万一没有换行。 比赛将返回null ,所以我们测试的空数组的长度来避免错误。



Answer 2:

我会做这个使用正则表达式:

var inTxt = document.getElementById('txtAreaId').value;
var charCount = inTxt.length + inTxt.match(/\n/gm).length;

其中/\n/匹配换行符(明显), g是全局标志。 m表示MULT行,你显然需要在这种情况下...
另外,虽然我记得这是一个稍微慢的:

var charCount = inTxt.length + (inTxt.split("\n").length);

编辑刚刚意识到,如果没有换行符相匹配,这会吐一个错误,所以最好这样做:

charCount = intTxt.length + (inTxt.match(/\n/) !== null ? inTxt.match(/\n/gm).length : 0);

或类似的东西...



Answer 3:

这里有一种方法:

var count = text.length + text.replace(/[^\n]/g, '').length;

或者,您可以替换所有的“裸” \n与字符\r\n然后用总长度。



Answer 4:

对于新的JS使用的encodeURI()因为escape()在ECMAScript的1.5弃用。

而是使用:
enteredText = textareaVariableName.val(); enteredTextEncoded = encodeURI(enteredText); linebreaks = enteredTextEncoded.match(/%0A/g); (linebreaks != null) ? numberOfLineBreaks = linebreaks.length : numberOfLineBreaks = 0;



文章来源: How to detect line breaks in a text area input?