JS 实现计算一段文字中的字节数,字母数,数字数,行数,汉字数。
看到了匹配,第一个想到了用正则表达式,哈哈,果然很方便。不过正则表达式高深莫测!我还没有研究明白啊。。目前学了点皮毛。代码如下:
<!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码值范围。
最后将上述五项的长度输出就行。代码演示如下:
开始生成题目
字节数:
数字数:
字母数:
行数:
汉字数:
代码目前肯定存在诸多的bug,还有不足之处,目前正在改善。并且在想方法匹配单词和注释。
可以进一下网页查看代码:
JS 实现计算一段文字中的字节数,字母数,数字数,行数,汉字数。的更多相关文章
- js或者jq判断一段文字中是否有自己想要的那几个字,如果有就把那几个字变成红色
如何判断一段文字中是否有自己想要的那几个字,如果有就把那几个字变成红色(在html中)比如有body中有这么一串文字“驾驶的后视镜的华盛顿”,想要判断里面是否有“驾驶”这两个字,如果有就把这两个字变成 ...
- 一段文字中的几个keyword显示高亮
将一段文字中的几个keyword显示高亮 演示样例:将"我的愿望是当个绿巨人,所以我想让我的皮(derma)肤是绿色"中的"皮肤"显示绿色. <span ...
- C++统计一段文字中各单词出现的频率
#include <iostream> using namespace std; /* run this program using the console pauser or add y ...
- js 小数计算为啥和想象中不一样!
今天遇到了一个比较有趣的事,如果要你计算0.1+0.2等于多少你会怎么回答? "0.3啊!"你可能都不会考虑.我也一样,当a=0.1,b=0.2时 if(a+b === 0.3){ ...
- 统计一段文字中出现频率最高的10个单词(c语言)
注:这次使用C语言做的这个程序.个别不懂的地方和算法部分是请教的其他同学,交流并吸收,所以收获颇多! 在程序中每一个地方我都做了注释,方便同学之间交流.也让老师容易看.程序也有很多不足的地方,但限于本 ...
- JS如何截取一段字符中,某一个字符的前面和后面的字符
比如这里的1992631934@qq.com如何获取到@前面的1992631934和@后面的qq.com js代码如下: var mail="1992631934@qq.com" ...
- js replace替换一段文本中所有的相同字符
在html<textarea>标签中回车换行的代码是: \n,html编辑器的回车换行是:\r\n或是\n. 下图是存入后台的<textarea>的文本,需要在页面上显示出来, ...
- 从一段文字中提取出uri信息
package handle.groupby; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io ...
- unity插件,从一段文字中提取中文并去重
using System.Collections.Generic; using System.Text.RegularExpressions; using UnityEditor; using Uni ...
随机推荐
- 辽宁移动宽带体验及魔百盒M101s-2刷机
一.背景 坐标:辽宁 某城,移动宽带100M. 设备:移动赠送,华为光猫一只,魔百盒M101s-2电视盒子 一只,据安装人员说这个魔百盒是移动自己开发设计的. 二.上网体验 上网:浏览一般网站没问题. ...
- SQL易错总结1
SQL易错总结1 进阶 select语句.select * 查询所有不规范,写出要查的属性.distinct慎用,性能消耗很大 like 模糊查询 ,空值判断是 is null 单行函数:lower( ...
- Docker容器学习与分享12
Docker多主机管理 之前在一台Centos7上安装了Docker,如果是在多台主机上都安装Docker,用手动安装的方法不光效率低下,而且有可能出错,所以可以使用Docker Machine进行多 ...
- Spring集成JUnit单元测试框架
一.JUnit介绍 JUnit是Java中最有名的单元测试框架,用于编写和运行可重复的测试,多数Java的开发环境都已经集成了JUnit作为单元测试的工具.好的单元测试能极大的提高开发效率和代码质量. ...
- map && multimap
map map 的意思是映射.用法一般是 map<char, int>mp 按照我的理解,map 类似于一个高级的数组.前面的数据类型 char 相当于下脚标,而数组元素的值就对应 ...
- 安卓手机ADB驱动干什么的?
Adb驱动是什么意思? /div> Adb是英文Android Debug Bridge的英文缩写,是debug工具,如果不是写IT的可能也很难理解debug的意思.说的直白一点就是Adb就是手 ...
- solidity fallback函数
什么是fallback函数: 出处:http://me.tryblockchain.org/blockchain-solidity-fallback.html 回退函数是合约里的特殊函数,没有名字,不 ...
- Linux命令——cat/less/more的区别
cat命令:用于显示整个文件的内容,单独使用没有翻页功能,经常和 more 命令搭配使用,cat 命令还可以将数个文件合并成一个文件. more命令:让画面在显示满一页时暂停,此时可按空格健继续显示下 ...
- C++11 并发指南三(std::mutex 详解)
上一篇<C++11 并发指南二(std::thread 详解)>中主要讲到了 std::thread 的一些用法,并给出了两个小例子,本文将介绍 std::mutex 的用法. Mutex ...
- Tensorflow[架构流程]
1. tensorflow工作流程 如官网所示: 根据整体架构或者代码功能可以分为: 图1.1 tensorflow架构 如图所示,一层C的api接口将底层的核运行时部分与顶层的多语言接口分离开. 而 ...