美文网首页
四、字符串

四、字符串

作者: 帅气的Lucky | 来源:发表于2021-09-20 21:59 被阅读0次

    字符串

    一、字符串的属性

    • 字符串的属性

      length: 表示字符串的长度

      例如 :

      var str = “howareyou”;
      console.log(str.length);
      console.log(str[0]);  //获取字符串中对应下标的字符
      
    • 注意: ECMAScript 中的字符串是不可变的; 也就是说,字符串一旦创建,它们的值就不能改变.

      例如:

      var str = “亲,包邮哦”;
      str[0] = “唉”; //不会改变
      

      如果要改变某个变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量.

      var str = “Hello”;
      str = str+” world!”;
      

    二、字符串的方法

    字符串的方法(函数)

    var str = 'ab';
    
    • str.charAt(3); 获取下标为3的字符

    • str.charCodeAt(3); 获取下标为3的字符的编码(ASCII码)

    • String.fromCharCode(94); ASCII编码转换成字符

      该方法是String的静态方法,所以用String调用,

      如:var str = String.fromCharCode(98,99); //可传入多个参数

      ASCII(AmericanStandard Code for Information Interchange,美国标准信息交换代码)

    • str.concat(); 连接字符串

      例如:

         var str1 = “hello”;
      
             var str2 = str1.concat(“ world”);
      
    • 字符串的查找方法

      str.indexOf(“abc”); 查找字符串第一次出现的位置,如果没找到则返回-1

      例如:

      var str = "abcdabcd";
      var subStr = “bcd”;
      var index = str.indexOf(subStr); 
      
    • str.lastIndexOf(“abc”); 查找字符串最后一次出现的位置,如果没找到则返回-1

      例如: var index = str.lastIndexOf(“abc”);

    • str.search(); 正则匹配(返回第一次出现的位置)

      例如:

      var str = ”Abcdabcd";
      var index = str.search(/abc/i);
      

      注: g表示进行全局匹配,i表示匹配的时候忽略大小写

    • str.replace(); 替换字符串

      例如:

      var str = "how are Are are you!";
      //替换一次
      var newStr = str.replace("are", "old are");
      //替换多次
      var newStr = str.replace(/are/g, "x");
      console.log(newStr)
      

      这里的替换只能执行一次,不能够进行全局匹配,如果需要全局匹配,则应使用正则表达式

    • str.substring(start,end); 截取字符串范围是[start,end)

      例如:

      var str=  "Helloworld!";
      console.log(str.substring(2,5));
      

      注:如果只有一个参数, 则表示到字符串最后

    • str.split(separator, howmany); 根据分隔符、拆分成数组

      • separator(字符串或正则表达式)

      • howmany(可以指定返回的数组的最大长度,可以省略)

        注:如果空字符串(“”)用作separator,那么stringObject中的每个字符之间都会被分割。

    • 大小写转换

      str.toLowerCase();把字符串转换成小写

      str.toUpperCase();把字符串转换成大写

    三、Math对象

    • Math对象

      Math对象可以用于执行数学任务

    • Math对象的常用函数:

      • Math.round(3.6) //四舍五入
      • Math.random() //返回0-1之间的随机数
      • Math.max(num1, num2) //返回较大的数
      • Math.min(num1, num2) //返回较小的数
      • Math.abs(num) //绝对值
      • Math.ceil(19.3) //向上取整
      • Math.floor(11.8) //向下取整
      • Math.pow(x,y) //x的y次方
      • Math.sqrt(num) //开平方
      • Math.sin(x)//返回数的正弦

    四、正则表达式的概念

    1、正则表达式修饰符

    修饰符 可以在全局搜索中不区分大小写:

    修饰符 描述
    i 执行对大小写不敏感的匹配。
    g 执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
    m 执行多行匹配。

    2、正则表达式模式

    方括号用于查找某个范围内的字符:

    表达式 描述
    [abc] 查找方括号之间的任何字符。
    [0-9] 查找任何从 0 至 9 的数字。
    (x|y) 查找任何以 | 分隔的选项。

    3、元字符是拥有特殊含义的字符:

    元字符 描述
    \d 查找数字。
    \D 非数字
    \w 数字字母下划线
    \W 非数字字母下划线
    \s 查找空白字符。
    \b 匹配单词边界。
    \uxxxx 查找以十六进制数 xxxx 规定的 Unicode 字符。

    4、量词

    量词 描述
    n+ 匹配任何包含至少一个 n 的字符串。
    n* 匹配任何包含零个或多个 n 的字符串。
    n? 匹配任何包含零个或一个 n 的字符串。

    5、方法

    • match 方法

      使用正则表达式模式对字符串执行查找,并将包含查找的结果作为数组返回。
      stringObj.match(rgExp)

      • 参数
        stringObj
        必选项。对其进行查找的 String 对象或字符串文字。
        rgExp
        必选项。为包含正则表达式模式和可用标志的正则表达式对象。也可以是包含正则表达式模式和可用标志的变量名或字符串文字。
        其余说明与exec一样,不同的是如果match的表达式匹配了全局标记g将出现所有匹配项,而不用循环,但所有匹配中不会包含子匹配项。

      • 实例

        var str="Hello world!"
        document.write(str.match("world") + "<br />")
        document.write(str.match("World") + "<br />")
        document.write(str.match("worlld") + "<br />")
        document.write(str.match("world!"))
        输出:
        world
        null
        null
        world!
         
        var str="1 plus 2 equal 3"
        console.log(str.match(/\d+/g)) // [1,2,3]
        
    • exec 方法

      是一个正则表达式方法。

      该方法用于检索字符串中的正则表达式的匹配。

      该函数返回一个数组,其中存放匹配的结果。如果未找到匹配,则返回值为 null。
      rgExp.exec(str)

      • 实例
      /e/.exec("The best things in life are free!");
      
    • test 方法

      test() 方法用于检测一个字符串是否匹配某个模式,如果字符串中含有匹配的文本,则返回 true,否则返回 false。
      rgexp.test(str)

      • 实例
      var patt = /e/;
      
      patt.test("The best things in life are free!");
      /^1[3-8][0-9]{9}$/.test('15611833906')
      
    • search 方法

      search 方法可使用字符串作为参数。字符串参数会转换为正则表达式:

      返回与正则表达式查找内容匹配的第一个子字符串的位置(偏移位)。
      stringObj.search(rgExp)

      • 实例
      var str="Visit lucky!"
      document.write(str.search(/lucky/i))
      
    • replace 方法

      返回根据正则表达式进行文字替换后的字符串的复制。
      stringObj.replace(rgExp, replaceText)

      • 实例

        <p>替换 "microsoft" 为 "Runoob" :</p>
        <button onclick="myFunction()">点我</button>
        <p id="demo">Visit Microsoft!</p>
        <script>
        function myFunction() {
            var str = document.getElementById("demo").innerHTML; 
            var txt = str.replace(/microsoft/i,"Runoob");
            document.getElementById("demo").innerHTML = txt;
        }
        
    • split 方法

      将一个字符串分割为子字符串,然后将结果作为字符串数组返回。
      stringObj.split([separator[, limit]])

      • 说明
        split 方法的结果是一个字符串数组,在 stingObj 中每个出现 separator 的位置都要进行分解。separator 不作为任何数组元素的部分返回。

      • 实例

        '156118 339\t06'.split(/\s/)
        
    • 正则匹配实例

    //.号元字符, 代表除了换行之外的所有单个字符
    var pattern = /g..gle/;   //一个点.匹配一个任意的字符
    var str = "goagle";
    console.log(pattern.test(str));
    
    //*号元字符, 配合其他字符使用, 允许其他字符出现任意多次
    // 重复多次匹配, 可以出现任意次, 
    var  pattern = /g.*gle/; //.* 匹配0到多个字符
    var  str = "google" 
    console.log(pattern.test(str)); 
    
    // [ ] : 表示字符可以出现的范围
    //[a-z]*表示任意0到多个a-z的字母
    var pattern = /g[a-z]*gle/;
    var str = "google";
    console.log(pattern.test(str));
    
    //非字符:  ^
    var pattern = /g[^0-9]*gle/; //可以有任意多个非0-9的字符
    var str = "google";
    console.log(pattern.test(str)); 
                
    //+ 表示至少出现1次
    //[A-Z]+: 至少出现一个A-Z的字符
    var pattern = /[a-z][A-Z]+/;
    var str = "gooGle";
    console.log(pattern.test(str)); 
                
    //使用元符号匹配
    //\w* :匹配任意多个数字字母下划线 , \w : 等价于[a-zA-Z0-9_] 
    var pattern = /g\w*gle/;
    var str = "gooA3gle";
    console.log(pattern.test(str));
    
    //\d 代表数字, 等价于 [0-9]
    //\d* 表示任意多个数字
    var pattern = /g\d*gle/;
    var str = "g3243gle";
    console.log(pattern.test(str)); 
                
    //\D: 匹配非数字, 相当于[^0-9]
    var pattern = /g\Dgle/;
    var str = "ga3gle";
    console.log(pattern.test(str)); 
                
    //\D{7,}: 匹配至少7个非数字, 相当于[^0-9]{7,}
    var pattern = /\D{7,}/;
    var str = "g3243gle";
    console.log(pattern.test(str)); 
    
    /使用锚元字符
    // /^ 匹配开始,从头开始匹配
    // $/ 匹配结尾,从结尾开始匹配
    var pattern = /^google$/;
    var str = "google";
    console.log(pattern.test(str));
                
    // \s 匹配空格
    var pattern = /goo\sgle/;
    var str = "goo gle";
    console.log(pattern.test(str));
    
    //m 多行匹配
    var str = "first second\nthird fourth\nfifth sixth";
    var patt = /\w+$/gm
    var patt = /\w+/gm
    console.log(str.match(patt));
    

    正则匹配实例

    /*是否带有小数*/
    function   isDecimal(strValue )  {  
       var  objRegExp= /^\d+\.\d+$/;
       return  objRegExp.test(strValue);  
    }  
    
    /*校验是否中文名称组成 */
    function ischina(str) {
        var reg=/^[\u4E00-\u9FA5]{2,4}$/;   /*定义验证表达式*/
        return reg.test(str);     /*进行验证*/
    }
    
    /*校验是否全由8位数字组成 */
    function isStudentNo(str) {
        var reg=/^[0-9]{8}$/;   /*定义验证表达式*/
        return reg.test(str);     /*进行验证*/
    }
    
    /*校验电话码格式 */
    function isTelCode(str) {
        var reg= /^((0\d{2,3}-\d{7,8})|(1[3584]\d{9}))$/;
        return reg.test(str);
    }
    
    /*校验邮件地址是否合法 */
    function IsEmail(str) {
        var reg=/^\w+@[a-zA-Z0-9]{2,10}(?:\.[a-z]{2,4}){1,3}$/;
        return reg.test(str);
    }
    

    相关文章

      网友评论

          本文标题:四、字符串

          本文链接:https://www.haomeiwen.com/subject/sldsgltx.html