码迷,mamicode.com
首页 > Windows程序 > 详细

String API

时间:2020-11-08 16:50:40      阅读:27      评论:0      收藏:0      [点我收藏+]

标签:function   lower   特点   解决   不包含   slice   表示   数组   art   

1.大小写转换

str.toUpperCase()  //都转为大写字母
str.toLowerCase()  //都转位小写字母

2.获取子字符串

str.slice(start,end) //从start截取到end
特点:
  1.包含start,不包含end
  2.如果省略end,表示一直选取到尾
  3.start和end不能取负数,可以用 str.length-n 代替 -n
str.substr(start,n) //从start开始截取n个字符串

3.查找关键词

let i = str.indexOf("关键词",开始位置);  //查找一个固定关键词的位置
    在str中,从“开始位置”开始查找,查找下一个“关键词”的位置
    返回值:下一个“关键词”的第一个字的下标位置,如果找不到返回-1
    如果省略开始位置,默认从0开始找
let i = str.lastIndexOf("关键词");  //查找最后一个关键词的位置
    注意:
        (1)区分大小写
             解决办法:在indexOf之前,先将str转为小写,再将关键词也转为小写,再查找
        (2)一次只能查找一个固定的关键词
             解决办法:正则表达式

练习1:查找字符串 “No zuo no die,no can no bibi” 打印出所有no在字符串的位置(不区分大小写)

    <script>
            let str="No zuo no die,no can no bibi";
            str=str.toLowerCase();
            let i=-1;
            do{
                i=str.indexOf("no",i+1);
                if(i!=-1){
                    console.log("在位置 "+i+" 发现敏感词");
                }else{
                    break;
                }
            }while(true);
        </script>

练习2:已知一个图片的路径为 “http:/tedu.cn/imgs/logo.png” 找到该图片的名字和后缀名

    <script>
        let url = "http:/tedu.cn/imgs/logo.png";
        let i = url.lastIndexOf("/");
        let filename= url.slice(i+1);
        let j = url.lastIndexOf(".");
        let ext = url.slice(j+1);
        console.log(filename, ext);
    </script>

4.正则表达式

1.字符集
    语法:[备选字符列表]
    注意:
        (1)不能加逗号分隔
        (2)每个[],只能匹配一位字符
    简写:如果字符集中部分字符的unicode号是连续的,可用 - 省略中间字符
    常用:[0-9]  一位数字
         [a-z]  一位小写字母
         [A-Z]  一位大写字母
         [A-Za-z]  一位字母,大小写都行
         [0-9A-Za-z]  一位字母或数字
         [\u4e00-\u9fa5]  一位汉字
    除了:[^74]   //除了7和4以外的字符
        如:匹配html元素的开始标签:<a[^>]+>
2.预定义字符集
    作用:对常用字符集的简写
    内容:\d  一位数字
         \w  一位字母,数字或_
         \s   一位空字符:空格,tab,…
         \.   一切字符
3.量词
    量词默认只修饰相邻的前一个字符集
    (1)有明确数量
        {n,m}  至少n个,最多m个
        {n,}  至少n个,多了不限
        {n}  必须n个,不能多也不能少
    (2)没有明确数量
        ?  可有可无,最多一个    
        *   可有可无,多了不限
        +   至少一个,多了不限
4.选择和分组
  选择:等效于程序中的或,表示在两组规则中选择其一
  语法:规则1 | 规则2
  分组:将多个规则用 () 包裹为一组
比如:
  手机号:+86或者0086开头(可有可无),后边是1,1后边是3,4,5,7,8之间选一个,最后是9位数字
  ((\+86|0086)\s+)?1[34578]\d{9}
  屏蔽微信关键词
  (微|w(ei)?)\s*(信|x(in)?)
5.匹配特殊位置
  开头: ^
  结尾: $
    作用:匹配的关键词必须出现在开头或结尾
    比如:只匹配开头的空字符: ^\s+
       只匹配结尾的空字符: \s+$
        即匹配开头,又匹配结尾: ^\s+|\s+$
    正则表达式问题:验证时,只要部分匹配,就会返回true
    解决:验证时,在前边加上^,后边加上$,就表示必须用头到尾完整匹配
  单词边界: \b
    作用:专门用于匹配一个独立的单词,包含空格、开头、结尾、标点符号

5.用正则表达式查找关键词

作用:用正则表达式查找字符串中第一个匹配的关键词位置,可以判断一句话中是否包含符合正则要求的敏感词
语法:let i = str.search(/正则表达式/);
返回值:返回第一个找到的匹配的关键词的位置,如果没有找到就返回-1
注意:
    (1)将正则表达式,前加^后加$,search也可以做验证
    (2)永远只能找到第一个
    (3)只能返回位置,无法返回关键词内容

6.查找敏感关键词内容

作用:查找字符串中所有和正则表达式匹配的关键词内容
语法:let arr=str.match(/正则表达式/);
返回值:包含所有找到的敏感词内容的数组,如果找不到,返回null
    注意:如果一个函数可能返回null,就必须先验证不是null,再使用!
问题:
    (1)默认正则表达式是区分大小写的
    解决:在第二个/后加i,意为忽略(ignore)
    (2)默认正则表达式只匹配第一个敏感词
    解决:在第二个/后加g,意为全部(global)
缺点:只能获得每个关键词的内容,无法获取关键词的位置

7.替换关键词

作用:将找到的敏感词都替换位指定的内容
1.简单替换:将所有敏感词都替换为统一的替换值
    str=str.replace(/正则表达式/,"替换值");
    注意:replace无权直接修改原字符串,只能返回新字符串,必须用变量接住替换后的内容
2.高级替换:根据每个敏感词的不同,动态选择对应的替换值
    str=str.replace(/正则表达式/,function(kword){
        //kword:自动获得本次找到的敏感词
        return 根据kword的不同,选择不同的替换值返回
    });
扩展:删除:将找到的敏感词,替换为""

练习:将字符串 “派出所的公安民警负责公共安全秩序” 中的派出所替换为PCS,公安替换为GA,民警替换为MJ,公共安全替换为GGAQ

    <script>
        let str = "派出所的公安民警负责公共安全秩序";
        str = str.replace(/派出所|公安|民警|公共安全/g,function(kword){
            return kword=="公安"?"GA":
                   kword=="派出所"?"PCS":
                   kword=="民警"?"MJ":"GGAQ"
        });
        console.log(str);
    </script>

8.切割

作用:将字符串,按某种子字符串,分割为多段
1.简单分割:切割符是一个固定不变的字符串
    let substrs=str.split("切割符");
    注意:切割后的结果中,不包含切割符
2.复杂切割:切割符可能有多种情况
    let substrs=str.split(/正则表达式/);

  

  

  

  

  

  

  

String API

标签:function   lower   特点   解决   不包含   slice   表示   数组   art   

原文地址:https://www.cnblogs.com/hourglas/p/13921606.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!