字符串骚操作集锦

  • 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()
}

: 以上所有方法都不会改变原字符串, 并且会返回一个新的结果字符串

posted @ 2017-10-23 16:08  阿席巴i  阅读(216)  评论(0)    收藏  举报