JS String

什么是string:由多个字符组成的只读字符数组

string vs 数组:

        相同:1、下标; 2、.length; 3、.slice()

        不同:类型不同: API不通用

API

大小写转换:将str中的字母都转为统一的小写/大写

  str.toLowerCase()      str.toUpperCase()

何时:不区分大小写时,都要先转为一致的大小写,再比较或判断

比如:验证码, 用户名, 电子邮件

获得指定位置的字符: str.charAt(i) => str[i]

获得指定位置字符的unicode号

  str.charCodeAt(i) 获得str中i位置的unicode号

将unicode号转回字:

    String.fromCharCode(unicode号)

获取子字符串:3种

  str.slice(starti,endi+1)

  str.substring(starti,endi+1) 用法同slice,只不过不支持负数参数

  str.substr(starti,n) 从starti开始,获取n个字符

查找关键词:4种

  1、查找一个固定的关键词

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

    在str中fromi位置之后,查找下一个"关键词"的位置

    返回:如果找到,返回关键词的下标位置 i      如果没找到,返回-1

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

    在str中找最后一个关键词的位置i

    问题:每次只能查找一种关键词

    解决:正则表达式模糊匹配多种关键词:

  2、判断是否包含敏感词

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

     在str中找第一个符合正则要求的敏感词的位置

     返回值:如果找到,返回下标位置     如果没找到,返回-1

     问题:默认正则表达式都是区分大小写

     解决:在第二个/后加后缀i, ignore,表示忽略大小写  

    问题:永远只能找第一个,无法找所有    仅返回位置,无法返回内容

  3、查找所有敏感词的内容

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

     返回值:kwords中保存所有找到的敏感词    如果找不到,返回null

     问题:默认正则表达式只匹配第一个符合条件的敏感词

     解决:在第二个/后加g, global 全部

     问题:只能获得内容,无法获得每个敏感词的位置

  4、即查找每个敏感词的内容,又查找位置:regExp.exec()

替换

什么是:将字符串中符合规则的敏感词替换为新内容

如何:2种

  1、简单替换: 将所有敏感词替换为同一种新值

      str=str.replace(/正则/ig,替换的新值)

     强调:所有字符串API都无权修改原字符串,只能返回新字符串

  2、高级替换:根据敏感词的不同,动态选择替换为不同的值

      str=str.replace(/正则/ig,function(kw){

               kw //自动获得本次找到的敏感词

               return 根据不同的kw返回不同的值

       })

  衍生:删除: 将关键词替换为 " "

切割

什么是:将字符串按指定的关键词切割为多段子字符串

如何:2种

1. 简单:分隔符是固定的:

var subStrs=str.split("分隔符")

返回: 多个子字符串的数组

      切割后的结果中,不包含分隔符的

  2. 复杂:分隔符不是固定的

     var subStrs=str.split(/正则/)

  固定套路:将字符串打散为字符数组:

     var chars=str.split("");

"hello".split("")	//可返回 ["h", "e", "l", "l", "o"]
"2:3:4:5".split(":")	//将返回["2", "3", "4", "5"]
"|a|b|c".split("|")	//将返回["", "a", "b", "c"]
使用下面的代码,可以把句子分割成单词:
var words = sentence.split(' ')
或者使用正则表达式作为 separator:
var words = sentence.split(/\s+/)

计算字符串的字符长度

str.replace(/[\u0391-\uFFE5]/g,"aa").length

str.replace(/[^\x00-\xff]/g,"aa").length

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值