如何检测文本区输入中的换行符?

Dav*_*igh 43 javascript jquery line-breaks special-characters

检查换行符的文本区域值然后计算出现次数的最佳方法是什么?

我的网页上的表单上有一个文本区域.我使用JavaScript来获取文本区域的值,然后检查其长度.

enteredText = textareaVariableName.val();
characterCount = enteredText.length; // One line break entered returns 1
Run Code Online (Sandbox Code Playgroud)

如果用户在文本区域中输入换行符,则上面的计算给出换行符的长度为1.但是我需要给换行符长度为2.因此我需要检查换行符和出现次数然后将其添加到总长度上.

我想要实现的例子

enteredText = textareaVariableName.val();
characterCount = enteredText.length + numberOfLineBreaks;
Run Code Online (Sandbox Code Playgroud)

在提出这个问题之前我的解决方案如下:

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

我可以看到编码文本和检查%0A有点啰嗦,所以我想要一些更好的解决方案.谢谢你提出的所有建议.

bee*_*bug 66

您可以match在包含换行符的字符串上使用,并且该数组中的元素数量应与换行符的数量相对应.

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

/\n/g是一个正则表达式,意思是'查找字符\n(换行符),并在全局(整个字符串)中执行.

||[]部分是为了防止没有换行符.匹配将返回null,因此我们测试空数组的长度,以避免错误.

  • 谢谢你的回答,但我很好奇如果用户自己输入`\n`会发生什么?也许他们只是想表达这个字符串.这种方式会将`\n`字符串替换为下一行吗? (3认同)