字符串常用方法(slice、split、substr、 substring...)

1.charAt()

返回指定索引位置处的字符。类似于数组用中括号获取相应下标位置的数据。

var str = 'abcdefg'

console.log(str.charAt(2)) // 输出 'c'

console.log(str[2]) // 输出 'c'

2.concat()

类似数组的concat(),用来返回一个合并拼接两个或两个以上字符串。原字符串不变。

const str1 = 'abcdefg'

const str2 = '1234567'

const str3 = str1.concat(str2)

console.log(str3) // 输出 'abcdefg1234567'

3.indexOf()、lastIndexOf()

indexOf,返回一个字符在字符串中首次出现的位置,lastIndexOf返回一个字符在字符串中最后一次出现的位置。

const str = 'abcdcefcg'

console.log(str.indexOf('c')) // 输出 '2'

console.log(str.lastIndexOf('c')) // 输出 '7'

4.slice()

提取字符串的片断,并把提取的字符串作为新的字符串返回出来。原字符串不变。

const str = 'abcdefg'

console.log(str.slice()) // 输出 'abcdefg', 不传递参数默认复制整个字符串

console.log(str.slice(1)) // 输出 'bcdefg',传递一个,则为提取的起点,然后到字符串结尾

console.log(str.slice(2, str.length-1)) // 输出'cdef',传递两个,为提取的起始点和结束点

5.split()

使用指定的分隔符将一个字符串拆分为多个子字符串数组并返回,原字符串不变。

const str = 'A*B*C*D*E*F*G'

console.log(str.split('*')) // 输出 ["A", "B", "C", "D", "E", "F", "G"]

6.substr(), substring()

这两个方法的功能都是截取一个字符串的片段,并返回截取的字符串。

substr和substring这两个方法不同的地方就在于参数二,substr的参数二是截取返回出来的这个字符串指定的长度,substring的参数二是截取返回这个字符串的结束点,并且不包含这个结束点。而它们的参数一,都是一样的功能,截取的起始位置。

注意事项:substr的参数二如果为0或者负数,则返回一个空字符串,如果未填入,则会截取到字符串的结尾去。substring的参数一和参数二为NAN或者负数,那么它将被替换为0。

const str = 'ABCDEFGHIJKLMN'

console.log(str.substr(2))  // 输出 'CDEFGHIJKLMN'

console.log(str.substring(2)) // 输出 'CDEFGHIJKLMN'

console.log(str.substr(2, 9))  // 输出 'CDEFGHIJK'

console.log(str.substring(2, 9))  // 输出 'CDEFGHI'

7.match()

match()方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配,并返回一个包含该搜索结果的数组。

const str = '2018年结束了,2019年开始了,2020年就也不远了'

const reg = /\d+/g  // 这里是定义匹配规则,匹配字符串里的1到多个数字

console.log(str.match(reg))  // 输出符合匹配规则的内容,以数组形式返回 ['2018', '2019', '2020']

console.log(str.match('20'))  // 不使用正则 ["20", index: 0, input: "2018年结束了,2019年开始了"]

注意事项:如果match方法没有找到匹配,将返回null。如果找到匹配,则 match方法会把匹配到以数组形式返回,如果正则规则未设置全局修饰符g,则 match方法返回的数组有两个特性:input和index。input属性包含整个被搜索的字符串。index属性包含了在整个被搜索字符串中匹配的子字符串的位置。

8.replace()

replace接收两个参数,参数一是需要替换掉的字符或者一个正则的匹配规则,参数二,需要替换进去的字符,仔实际的原理当中,参数二,你可以换成一个回调函数。

const str = '2018年结束了,2019年开始了,2020年就也不远了'

const rex = /\d+/g  // 这里是定义匹配规则,匹配字符串里的1到多个数字

const str1 = str.replace(rex, '****')

console.log(str1) // 输出:"****年结束了,****年开始了,****年也不远了"

const str2 = str.replace(rex, function(item){

    console.log(arguments)  // 看下面的图片

    const arr = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖']

    let newStr = ''

    item.split('').map(function(i){

            newStr += arr[i]

    })   

    return newStr     

})

console.log(str2) // 输出:贰零壹捌年结束了,贰零壹玖年开始了,贰零贰零年也不远了

9.search()

在目标字符串中搜索与正则规则相匹配的字符,搜索到,则返回第一个匹配项在目标字符串当中的位置,没有搜索到则返回一个-1。

const str = '2018年结束了,2019年开始了,2020年就也不远了'

const reg = /\d+/i  // 这里是定义匹配规则,匹配字符串里的1到多个数字

console.log(str.search(reg)) // 输出 0  这里搜索到的第一项是从位置0开始的

10.toLowerCase(),toUpperCase()

toLowerCase把字母转换成小写,toUpperCase()则是把字母转换成大写。

const str1 = 'abcdefg'

const str2 = 'ABCDEFG'

console.log(str2.toLowerCase())  // 输出:'abcdefg'

console.log(str1.toUpperCase())  // 输出:'ABCDEFG'

11.includes(), startsWith(), endsWith()

includes、startsWith、endsWith,es6的新增方法,includes 用来检测目标字符串对象是否包含某个字符,返回一个布尔值,startsWith用来检测当前字符是否是目标字符串的起始部分,相对的endwith是用来检测是否是目标字符串的结尾部分。

const str = 'Excuse me, how do I get to park road?'

console.log(str.includes('how')) // 输出:true

console.log(str.startsWith('Excuse')) // 输出:true

console.log(str.endsWith('?')) // 输出:true

12.repeat()

返回一个新的字符串对象,新字符串等于重复了指定次数的原始字符串。接收一个参数,就是指定重复的次数。原字符串不变。

const str = 'http'

const str2 = str.repeat(3)

console.log(str) // 输出:'http'

console.log(str2) // 输出:'httphttphttp'

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352

推荐阅读更多精彩内容