首页 > 代码库 > 字符串

字符串

正课: 

1. ***String

   什么是:

***内置对象:

***包装类型:

   字符串API


1. 什么是: 多个字符组成的只读字符数组

      vs 数组: 下标i

                   length

                   slice()  concat

      不同: 数组中凡是直接修改原数组的API,字符串都不能用!


2. 内置对象: ES标准中规定的,浏览器厂商已经实现的现成的对象和API

    11个: Number  String  Boolean 

              Array Date RegExp Math

              Error

              Function  Object

              Global(浏览器中被替换为window)

3. 包装类型对象: 

    什么是: 专门封装基础类型的值,并提供操作基础类型值的API的对象

    为什么: 基础类型的值,本身不包含任何API功能

    何时: 只要试图对基础类型的值调用API时,都会自动创建对应类型的包装类型对象来封装基础类型的值。

    调用后: 包装类型对象,自动释放!

       比如: var n=345.678;

                n.toFixed(2)=>345.678.toFixed(2)

                                    =>new Number(345.678).toFixed(2)

4. String的API: 

***所有字符串API都无权修改原字符串,只能返回新字符串!

   大小写转换: 将字符串中所有英文字母转为统一的大小写

      何时: 只要不区分大小写时,都要先转为一致的大小写,再判断。 比如: 用户名,邮箱地址,验证码

      如何: str.toUpperCase() //都转大写

               str.toLowerCase() //都转小写


   获得指定位置的字符: str[i]

       var char=str.charAt(i);

       获得指定字符的unicode号: 

       var unicode=str.charCodeAt(i); //省略i,默认是0

           将unicode号反向转回文字

           var char=String.fromCharCode(unicode);


    选取子字符串: str.slice(starti,endi+1)

       str.substring(starti,endi+1) 不支持负数参数

       str.substr(starti,n): 选取starti开始的n个元素

正课: 

1. ***String API

   查找关键词

   替换

   切割字符串

2. *****正则表达式


1. 查找关键词: 4种

   1. 查找一个固定的关键词出现的位置:

       var i=str.indexOf("关键词",fromi)

         在str中,从fromi位置开始查找"关键词"的位置

         如果找到,返回关键词所在位置的下标

                找不到,返回-1

         简写: 省略fromi,默认从0开始

       专门找最后一个关键词的位置: 

       var i=str.lastIndexOf("关键词")

         在str中,找最后一个关键词出现的位置


      问题: 只能找第一个关键词

      解决: 正则表达式: 


   2. 使用正则表达式查找指定的一类关键词的位置: 

       按模式匹配: 

       var i=str.search(/正则表达式/);

           在str中查找第一个符合正则表达式要求的关键词的位置

           返回值: 找到的关键词的下标, 如果找不到返回-1

       何时: 仅判断是否包含敏感词时,就用search

                如果返回不是-1,说明包含,否则说明没找到

       忽略大小写: /正则/i

       问题: 1. 只能获得第一个的位置,不能获得所有敏感词

                2. 只能返回位置,不能返回内容

    3. 使用正则表达式查找指定的一类关键词的内容: 

        var arr=str.match(/正则/ig);

        默认只找第一个,找所有,必须加g

        返回值: 所有敏感词组成的数组

               没找到返回null!

           强调: 如果一个API有可能返回null,就必须先判断不是null,再使用!

        arr.length 表示找到的关键词个数

        问题: 仅返回所有关键词的内容,无法返回每个关键词位置

    4. 即找所有关键词内容,又找每个关键词的位置?

        reg.exec();


2. 替换: 将字符串中所有敏感词替换为新内容

    基本替换: 

    str=str.replace(/正则/ig,“替换值”);

    


4. *****正则表达式:

   什么是: 专门定义一类字符串统一规则的表达式 

   何时: 1. 按照指定规则模糊查找一类关键词时

            2. 表单中验证输入项的格式

   如何: 语法:   

      1. 最简单的正则其实就是关键词原文

      2. 字符集: 规定字符串中一位字符可用的备选字符列表

         何时: 只要某一位字符,有多个备选字时

         如何: [备选字符列表]

           强调: 一个字符集只能匹配一位字符

           简写: 如果备选字符列表是连续的,就可用-省略中间字符

              一位字母: [a-zA-Z]

              一位数字: [0-9]

              一位汉字: [\u4e00-\u9fa5]

         特殊: 除了: [^排除的字符列表]

                    强调: ^必须写在[开头]

     3. 预定义字符集: 4个:

          \w  一位字母数字或_  =>[a-zA-Z0-9_]

          \d  一位数字  => [0-9]

          \s  一位空字符: 空格,Tab,...

          .    一位任意字符

        强调: 一个预定义字符集仅匹配一位字符

                 只有规则和预定义字符完全一致时,才能使用

                      如果不一致, 依然需要手写普通字符集

         字符集仅控制每个字符的内容

     4. 量词: 专门固定字符出现的次数

         有明确数量边界: 

           字符集{min,max}   规定字符集必须最少出现min次

                                                                 最多max次

           字符集{min,}   最少min次, 多了不限

           字符集{n}        必须n次

         没有明确数量边界:

           字符集?     可有可无,最多一次

           字符集*     可有可无,多了不限

           字符集+    {1,}

         强调: 仅修改相邻的前一个字符集

     5. 选择和分组: 

         分组: 将多个字符集分成一组: 

             何时: 如果希望一个量词同时修饰多个字符集时

            比如: 我(了个?)?去: 我去   我了去   我了个去    我个去X

         regexper.com

         选择: 其实就是"或"   规则1|规则2 

            只要匹配任意一个规则即可

            (微|w(ei)?)\s*(信|x(in)?)

       

     手机号: 

         (\+86|0086)?      +86或0086  可有可无,最多一次

         \s*                        空字符 可有可无,多了不限

         1

         [34578]               34578中挑一个

         \d{9}                    9位数字

         (\+86|0086)?\s*1[34578]\d{9}

     邮箱:

         字母/数字或_   一次以上

         @

         字母或数字      2位以上

         (.和 字母或数字      2到3位)   1到2次

         \w+@[a-zA-Z0-9]{2,}(.[a-zA-Z0-9]{2,3}){1,2}

         




























本文出自 “祝融与火” 博客,谢绝转载!

字符串