总结一下在工作和学习中经常使用的String对象常用的API
charAt(index): 返回指定位置的字符
注: index的值小于0 或者大于字符串的长度 - 1(即取不到值的时候) 都会返回空串
charCodeAt(index): 返回指定位置的字符的Unicode编码(可参照ASCLL码表)
注: index如果不写 则为0 取第一个字符进行转换
在工作中的应用:
因为业务与选项ABCD有关联,页面上显示的为ABCD选项, 数据库中存的确实0123, 所以在调用接口之前需要应用到charCodeAt()方法将ABCD转为0123。字符串A的Unicode编码为65 将其减去65就转换为0了 应用如下:
fromCharCode(num1, num2, …, numX) 将一个或者多个Unicode值,转为一个字符串
注: fromCharCode()和charCodeAt()两个方法相对应 可以实现Unicode和字符之间的相互转换
在工作中的应用:
如以上charCodeAt()中的业务描述 当取到数据库中的0123 我们在页面上需要展示成ABCD这时候就要用到fromCharCode()了, 应用如下:
indexOf(searchValue, startIndex): 返回指定字符串值在字符串中首次出现的位置
参数说明:
- searchValue: 规定必需. 需要检索的字符串
- startIndex: 规定在字符串中开始检索的位置. 取值范围为 0 ~ 是String.length - 1。如果省略这个参数, 将从字符串的第一个字符开始检索
注: indexOf()方法对大小写敏感 如果检索不到这个字符串的话, 会返回 -1 所以可以通过返回值是否为 - 1 判断字符串中是否包含要检索的值 在工作中使用的频率很高
lastIndexOf(): 返回指定字符串值在字符串中最后出现的位置
注: lastIndexOf()方法和indexOf()一样 都对大小写敏感 如果检索不到这个字符串的话, 会返回 -1
在工作中的应用:
lastIndexOf()方法 在工作中有个很经典的应用 就是用来截取文件的后缀名 判断文件类型 (记得以前刚开始写JS的时候, 是用的indexOf()来截取的 然后文件名中带有’ . ’ 就直接崩了 哈哈) 应用如下:
通过lastIndexOf() 判断文件名称中最后一个’ . ’ 字符出现的位置 再使用substring()方法进行截取
replace(regexp/substr, replaceStr): 用于在字符串中用一些字符替换另一个些字符(可使用正则表达式匹配)
参数说明:
- regexp/substr: 需要替换掉的值 可以为一个字符串 也可以为正则表达式
- replaceStr: 被替换后的值
注: 如果是想替换所有出现的值 需要用到正则表达式中的 ’ g ’ 关键字 字符串只会替换第一次匹配到的
在工作中的应用:
之前在移动端开发时碰到一个很大的坑, IOS使用new Date(yyyy-mm-dd)将字符串转为时间对象时 会报错 然后导致页面崩溃 然后因为这个 我喜提一个严重阻塞bug单 所以在移动端开发时 如果设置yyyy-mm-dd格式时间字符串转为时间对象的操作 需要将yyyy-mm-dd替换成yyyy/mm/dd 这样IOS才能够转换成功 应用如下:
substr(start, len)、substring(start, end) 、slice(start, end) 用于截取字符串
-
substr(start, len): 指定截取从start开始长度为len的字符串(长度不足的情况只截取到最后一个) 只传一个参数代表从start开始截取到最后 不推荐使用 ECMAscript 没有对该方法进行标准化
-
substring(start, end): 截取start开始到end位置的字符串(不包含end) 如果只传一个参数 从start开始截取到最后, substring会比较start和end的大小 较大的作为end 并且substring()不接收负数(会将其转换成0)
-
slice(start, end): 和substring基本相似 可以接收负数 比substring更灵活 如果参数接收负数, 则表示从尾部开始算起
split(separator,howmany): 用于把一个字符串分隔成字符串数组
参数说明:
- separator: 指定一个字符串或者正则表达式分隔字符串
- howmany: 指定分隔后数组的长度 非必填 如果设置了该参数,返回的数组的不会超过这个长度
注: 如果把空字符串"" 用作分隔符那么每个字符串之间都会被分开 如上图中的例子1, String.split() 执行的操作与 Array.join() 执行的操作是相反的
toLocaleLowerCase() 、toLocaleUpperCase()、toLowerCase()、toUpperCase() 将字符串进行大小写转换
注: 大多时候toLocaleLowerCase()和toLowerCase()、toLocaleUpperCase()和toUpperCase()返回的结果是一致的 除了集中特殊的语言(如土耳其语 这个和我们关系不大)
String.trim(): 去除字符串首尾空格 多用于输入验证
es6新增 trimEnd() 以及 trimStart() 用于去除首或尾的空格
以下为ES6后新增字符串方法参考 ES6入门
String.includes(): 判断字符串中是否包含某个字符串 第二个参数指定开始检索位置
String.startsWith(): 判断字符串是否以参数字符串开头[endsWith 判断是以参数字符串否结尾]
String.repeat(): 返回一个字符串 将原字符串循环n次
如果参数为小数 则向下取整 为0则返回空串
String.padStart(): 用指定字符串在原有字符串前面补全为指定长度字符串
第一个参数为字符串的长度, 第二个为用于补全长度的字符串 主要可以用于格式化字符串 以及 定位数 与其对应的padEnd()则为从原有字符串后面补全
String.replaceAll(): 替换全部匹配字符串 而不是第一个
可以不用replace中写正则表达式了