标签: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(/正则表达式/);
标签:function lower 特点 解决 不包含 slice 表示 数组 art
原文地址:https://www.cnblogs.com/hourglas/p/13921606.html