String API
2020-12-18 21:32
标签:function lower 特点 解决 不包含 slice 表示 数组 art 1.大小写转换 2.获取子字符串 3.查找关键词 练习1:查找字符串 “No zuo no die,no can no bibi” 打印出所有no在字符串的位置(不区分大小写) 练习2:已知一个图片的路径为 “http:/tedu.cn/imgs/logo.png” 找到该图片的名字和后缀名 4.正则表达式 5.用正则表达式查找关键词 6.查找敏感关键词内容 7.替换关键词 练习:将字符串 “派出所的公安民警负责公共安全秩序” 中的派出所替换为PCS,公安替换为GA,民警替换为MJ,公共安全替换为GGAQ 8.切割 String API 标签:function lower 特点 解决 不包含 slice 表示 数组 art 原文地址:https://www.cnblogs.com/hourglas/p/13921606.htmlstr.toUpperCase() //都转为大写字母
str.toLowerCase() //都转位小写字母
str.slice(start,end) //从start截取到end
特点:
1.包含start,不包含end
2.如果省略end,表示一直选取到尾
3.start和end不能取负数,可以用 str.length-n 代替 -n
str.substr(start,n) //从start开始截取n个字符串
let i = str.indexOf("关键词",开始位置); //查找一个固定关键词的位置
在str中,从“开始位置”开始查找,查找下一个“关键词”的位置
返回值:下一个“关键词”的第一个字的下标位置,如果找不到返回-1
如果省略开始位置,默认从0开始找
let i = str.lastIndexOf("关键词"); //查找最后一个关键词的位置
注意:
(1)区分大小写
解决办法:在indexOf之前,先将str转为小写,再将关键词也转为小写,再查找
(2)一次只能查找一个固定的关键词
解决办法:正则表达式
1.字符集
语法:[备选字符列表]
注意:
(1)不能加逗号分隔
(2)每个[],只能匹配一位字符
简写:如果字符集中部分字符的unicode号是连续的,可用 - 省略中间字符
常用:[0-9] 一位数字
[a-z] 一位小写字母
[A-Z] 一位大写字母
[A-Za-z] 一位字母,大小写都行
[0-9A-Za-z] 一位字母或数字
[\u4e00-\u9fa5] 一位汉字
除了:[^74] //除了7和4以外的字符
如:匹配html元素的开始标签:]+>
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
作用:专门用于匹配一个独立的单词,包含空格、开头、结尾、标点符号
作用:用正则表达式查找字符串中第一个匹配的关键词位置,可以判断一句话中是否包含符合正则要求的敏感词
语法:let i = str.search(/正则表达式/);
返回值:返回第一个找到的匹配的关键词的位置,如果没有找到就返回-1
注意:
(1)将正则表达式,前加^后加$,search也可以做验证
(2)永远只能找到第一个
(3)只能返回位置,无法返回关键词内容
作用:查找字符串中所有和正则表达式匹配的关键词内容
语法:let arr=str.match(/正则表达式/);
返回值:包含所有找到的敏感词内容的数组,如果找不到,返回null
注意:如果一个函数可能返回null,就必须先验证不是null,再使用!
问题:
(1)默认正则表达式是区分大小写的
解决:在第二个/后加i,意为忽略(ignore)
(2)默认正则表达式只匹配第一个敏感词
解决:在第二个/后加g,意为全部(global)
缺点:只能获得每个关键词的内容,无法获取关键词的位置
作用:将找到的敏感词都替换位指定的内容
1.简单替换:将所有敏感词都替换为统一的替换值
str=str.replace(/正则表达式/,"替换值");
注意:replace无权直接修改原字符串,只能返回新字符串,必须用变量接住替换后的内容
2.高级替换:根据每个敏感词的不同,动态选择对应的替换值
str=str.replace(/正则表达式/,function(kword){
//kword:自动获得本次找到的敏感词
return 根据kword的不同,选择不同的替换值返回
});
扩展:删除:将找到的敏感词,替换为""
作用:将字符串,按某种子字符串,分割为多段
1.简单分割:切割符是一个固定不变的字符串
let substrs=str.split("切割符");
注意:切割后的结果中,不包含切割符
2.复杂切割:切割符可能有多种情况
let substrs=str.split(/正则表达式/);