字符串骚操作集锦
-
charAt( [下标] ) : 返回下标所对应的字符
-
indexOf( [字符] ) :返回该字符所在下标[不可使用正则,是比search()更加底层的方法,系统资源消耗相对也较小, 效率也更高]
-
search( [正则] ) : 返回满足正则的字符所在下标
-
match( [正则] ) :
返回一个数组(若未找到则返回null), 数组包含的元素类型取决于正则表达式中是否有g标识,若没有g, 则返回匹配到的目标文本和正则表达式的子表达式所匹配的文本(并包含index[匹配字符下标], input[字符串的引用]属性)
若有g, 则 match() 方法将执行全局检索, 返回所有满足该表达式的文本集合(不包含index, input属性)
-
regExp.exec( string ) :
若找到匹配文本则返回数组(与match不带g标识返回类型相同), 若未找到则返回null当 RegExpObject 是一个全局正则表达式时, 它会在 RegExpObject 的 lastIndex 属性指定的字符处开始检索字符串 string。当 exec() 找到了与表达式相匹配的文本时,在匹配后,它将把 RegExpObject 的 lastIndex 属性设置为匹配文本的最后一个字符的下一个位置。这就是说,您可以通过反复调用 exec() 方法来遍历字符串中的所有匹配文本。当 exec() 再也找不到匹配的文本时,它将返回 null,并把 lastIndex 属性重置为 0。
-
replace( [正则] , [要替换成的文字] ) : 替换满足该正则的为目标字符
-
slice( [起始下标] , [终止下标] ) : 切割字符串并返回被切割的字符串
-
split( [切分符] ) : 将切分符作为切割点切分字符串为数组
-
substr( [起始下标] , [切割长度] ) : 从起始下标开始切割指定长度的字符,起始坐标可以为负数
-
substring( [起始坐标] , [终止坐标] ) : 作用等同于slice(),但是该方法会将较小的一个数作为起始坐标, 负数识别为0
-
toUpperCase() : 转为大写
-
toLowerCase() : 转为小写
string.replace()中第二个参数可为function, 返回用于替换的字符串, 例:
// 将连字符形式转为驼峰式
var str = 'as-vip-staging'
function camelize() {
var camelizeRE = /-(\w)/g
str.replace(camelizeRE, function (_, c){
console.log(_, c) // _(正则匹配到的整个字符串), c(正则中用小括号包裹的字符[即$1(子表达式匹配到的文本)]), 若有其他子表达式, 则在形参中接着写即可接到, 如$2, $3, ...
return c ? c.toUpperCase() : ''
})
}
camelize(str) // asVipStaging
// 将单词转为首字母大写的形式
const capitalize = str => str.charAt(0).toUpperCase() + str.slice(1)
// 将驼峰式转为连字符形式
const hyphenateRE = /([^-])([A-Z])/g
const hyphenate = str => {
return str
.replace(hyphenateRE, '$1-$2')
.replace(hyphenateRE, '$1-$2')
.toLowerCase()
}
注 : 以上所有方法都不会改变原字符串, 并且会返回一个新的结果字符串

浙公网安备 33010602011771号