• 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(/[^
    ]/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(/[^ ]/g,""); 其他同1, 用于匹配换行符。

    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,还有不足之处,目前正在改善。并且在想方法匹配单词和注释。

    可以进一下网页查看代码:

    我的代码

  • 相关阅读:
    Node.js:事件循环
    Node.js:回调函数
    Node.js:REPL(交互式解释器)
    Node.js:NPM 使用介绍
    Node.js:创建第一个应用
    Node.js:安装配置
    Node.js:教程
    Node.js:目录
    Node.js:template
    虚拟化之xenserver
  • 原文地址:https://www.cnblogs.com/walldong/p/wall3.html
Copyright © 2020-2023  润新知