什么是检查换行文本区域的值,然后计算发生的次数,如果有的话最好方法是什么?
我有我的网页中的窗体上的文本区域。 我使用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
有点啰嗦,所以我一些更好的解决方案了。 感谢您的所有建议。
可以使用match
在包含换行符的字符串,而该阵列中的元件的数目应当对应于换行的数目。
enteredText = textareaVariableName.val();
numberOfLineBreaks = (enteredText.match(/\n/g)||[]).length;
characterCount = enteredText.length + numberOfLineBreaks;
/\n/g
是一个正则表达式的意思是“查找字符\n
(换行符),并做到这一点全局(在整个字符串)。
该||[]
部分是以防万一没有换行。 比赛将返回null
,所以我们测试的空数组的长度来避免错误。
我会做这个使用正则表达式:
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);
或类似的东西...
这里有一种方法:
var count = text.length + text.replace(/[^\n]/g, '').length;
或者,您可以替换所有的“裸” \n
与字符\r\n
然后用总长度。
对于新的JS使用的encodeURI()
因为escape()
在ECMAScript的1.5弃用。
而是使用:
enteredText = textareaVariableName.val(); enteredTextEncoded = encodeURI(enteredText); linebreaks = enteredTextEncoded.match(/%0A/g); (linebreaks != null) ? numberOfLineBreaks = linebreaks.length : numberOfLineBreaks = 0;