JS 实现计算一段文字中的字节数,字母数,数字数,行数,汉字数。
2016-03-20 23:01
621 查看
看到了匹配,第一个想到了用正则表达式,哈哈,果然很方便。不过正则表达式高深莫测!我还没有研究明白啊。。目前学了点皮毛。代码如下:
代码解释:
1、var zj=nums.replace(/[^\S]/g,""); 获取nums中的所有非空白字符,replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。这样读取zi的长度就知道了字节的长度。
^符号用于匹配一行的开头。g用于全文查找出现的所有匹配字符。\S就是匹配所有非空白字符。
2、var sz = nums.replace(/[^0-9]/g,""); 其他同上,0-9用于匹配数字。
3、var hs = nums.replace(/[^\n]/g,""); 其他同1,\n用于匹配换行符。
4、var zm = nums.replace(/[^a-z]/ig,""); 其他同1,a-z用于匹配所有a-z的字母,i表示不区分大小写。
5、var hz=nums.replace(/[^\u4e00-\u9fff]/g,"");其他同1,\u4e00-\u9fff用于表示所有汉字,u4e00到u9fff是汉字的Unicode码值范围。
最后将上述五项的长度输出就行。代码演示如下:
// function countChar(){
//document.getElementById("counterzj").innerHTML= document.getElementById("status").value.length;
var nums = document.getElementById('status').value;
var zj=nums.replace(/[^\S]/g,"");
document.getElementById("counterzj").innerHTML= zj.length;
var sz = nums.replace(/[^0-9]/g,"");
document.getElementById('countersz').innerHTML = sz.length;
var hs = nums.replace(/[^\n]/g,"");
document.getElementById('counterhs').innerHTML = hs.length+1;
var zm = nums.replace(/[^a-z]/ig,"");
document.getElementById('counterzm').innerHTML = zm.length;
var hz=nums.replace(/[^\u4e00-\u9fff]/g,"")
document.getElementById('counterhz').innerHTML = hz.length;
}
// ]]>
开始生成题目
字节数:
数字数:
字母数:
行数:
汉字数:
代码目前肯定存在诸多的bug,还有不足之处,目前正在改善。并且在想方法匹配单词和注释。
可以进一下网页查看代码:
我的代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title> new document </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="generator" content="editplus" /> <meta name="author" content="" /> <meta name="keywords" content="" /> <meta name="description" content="" /> </head> <body> <script language="javascript"> function countChar(){ //document.getElementById("counterzj").innerHTML= document.getElementById("status").value.length; var nums = document.getElementById('status').value; var zj=nums.replace(/[^\S]/g,""); document.getElementById("counterzj").innerHTML= zj.length; var sz = nums.replace(/[^0-9]/g,""); document.getElementById('countersz').innerHTML = sz.length; var hs = nums.replace(/[^\n]/g,""); document.getElementById('counterhs').innerHTML = hs.length+1; var zm = nums.replace(/[^a-z]/ig,""); document.getElementById('counterzm').innerHTML = zm.length; var hz=nums.replace(/[^\u4e00-\u9fff]/g,"") document.getElementById('counterhz').innerHTML = hz.length; } </script> <button type='button' onclick="countChar()">开始生成题目</button><br> 字节数:<span id="counterzj"></span><br> 数字数:<span id="countersz"></span><br> 字母数:<span id="counterzm"></span><br> 行数:<span id="counterhs"></span><br> 汉字数:<span id="counterhz"></span><br> <textarea id="status"cols="50" rows="30"> </textarea> </body> </html>
代码解释:
1、var zj=nums.replace(/[^\S]/g,""); 获取nums中的所有非空白字符,replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。这样读取zi的长度就知道了字节的长度。
^符号用于匹配一行的开头。g用于全文查找出现的所有匹配字符。\S就是匹配所有非空白字符。
2、var sz = nums.replace(/[^0-9]/g,""); 其他同上,0-9用于匹配数字。
3、var hs = nums.replace(/[^\n]/g,""); 其他同1,\n用于匹配换行符。
4、var zm = nums.replace(/[^a-z]/ig,""); 其他同1,a-z用于匹配所有a-z的字母,i表示不区分大小写。
5、var hz=nums.replace(/[^\u4e00-\u9fff]/g,"");其他同1,\u4e00-\u9fff用于表示所有汉字,u4e00到u9fff是汉字的Unicode码值范围。
最后将上述五项的长度输出就行。代码演示如下:
// function countChar(){
//document.getElementById("counterzj").innerHTML= document.getElementById("status").value.length;
var nums = document.getElementById('status').value;
var zj=nums.replace(/[^\S]/g,"");
document.getElementById("counterzj").innerHTML= zj.length;
var sz = nums.replace(/[^0-9]/g,"");
document.getElementById('countersz').innerHTML = sz.length;
var hs = nums.replace(/[^\n]/g,"");
document.getElementById('counterhs').innerHTML = hs.length+1;
var zm = nums.replace(/[^a-z]/ig,"");
document.getElementById('counterzm').innerHTML = zm.length;
var hz=nums.replace(/[^\u4e00-\u9fff]/g,"")
document.getElementById('counterhz').innerHTML = hz.length;
}
// ]]>
开始生成题目
字节数:
数字数:
字母数:
行数:
汉字数:
代码目前肯定存在诸多的bug,还有不足之处,目前正在改善。并且在想方法匹配单词和注释。
可以进一下网页查看代码:
我的代码
相关文章推荐
- 视频播放插件Video.js简单使用
- javascript。。。
- ext.js打印出提示弹窗(鼓捣了两天终于尼玛出来了)
- bzoj 2257: [Jsoi2009]瓶子和燃料
- 学习JS的第一天
- jsp实现简单用户登录
- Javascript对象创建
- 剖析javascript全局变量和局部变量
- JSP自定义标记taglib学习笔记
- javascript
- JS仿百度搜索自动提示框匹配查询功能
- JS中decodeURI()与decodeURIComponent()区别
- <香港科技大学html+css+js课堂笔记>week1--Form相关
- JavaScript BOM
- PhantomJS快速入门教程
- C#, Java, PHP, Python和Javascript几种语言的AES加密解密实现【多种语言AES/CBC/PKCS5Padding通用加解密数据】
- js基础语法若干
- [置顶] js闭包
- u插件开发,图解每个js之前的通信
- Javascript基本算法演练 Seek and Destroy