所有字符串API都无权修改原字符串,只能返回新字符串!
转换
1.大小写转换: 将字符串中所有英文字母转为统一的大小写
何时: 只要不区分大小写时,都要先转为一致的大小写,再判断。 比如: 用户名,邮箱地址,验证码
如何: str.toUpperCase() //都转大写
str.toLowerCase() //都转小写
2.得指定位置的字符: str[i]
var char=str.charAt(i);
3.获得指定字符的unicode号:
var unicode=str.charCodeAt(i); //省略i,默认是0
4.将unicode号反向转回文字
var char=String.fromCharCode(unicode);
5. 选取子字符串: str.slice(starti,endi+1)
str.substring(starti,endi+1) 不支持负数参数
str.substr(starti,n): 选取starti开始的n个元素
查找关键词: 4种API(第四种为正则的Api)
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();
替换: 将字符串中所有敏感词替换为新内容
基本替换:
str=str.replace(/正则/ig,“替换值”)
问题: 不能根据不同的关键词,选择不同的值替换
解决: 高级替换:
str=str.replace(/正则/ig,function(kw){
//kw会自动获得本次找到的关键词内容
return //根据不同kw,返回不同的替换值
})
何时: 只要根据不同的关键词,替换不同内容时
衍生:
删除: 将关键词替换为""
格式化: 将原字符串重新拼接为新的格式
比如: "19831226" => "1983年12月26日"
2步: 1. 正则将原字符串分组
/(\d{4})(\d{2})(\d{2})/
// 1 2 3
2. 使用简单替换: str.replace(/正则/,"...$n...")
$n可自动获得第n个分组的子内容
n从1开始
切割: 将原字符串,按指定字符,分隔为多个子字符串
如何: var substrs=str.split(/正则/)
返回切割后的多个子字符串组成的数组
结果中,不再包含分隔符
固定套路: 将字符串打散成字符数组: var chars=str.split("")