JavaScript:String对象(下)

76 阅读4分钟

开启掘金成长之旅!这是我参加「掘金日新计划·12月更文挑战」的第七天,点击查看活动详情

String.prototype.slice()

slice()方法用于从原字符串取出子字符串并返回,不改变原字符串。他的第一个参数是子字符串的开始位置,第二个参数是子字符串的结束位置(不含该位置)。

       'JavaScript'.slice(0,4) //"Java"

如果省略第二个参数,则表示子字符串一直到原字符串结束。

       'JavaScript'.slice(4) //"Script"

如果参数是负值,表示从结尾开始倒数计算的位置,即该负值加上字符串长度。

       'JavaScript'.slice(-6) //"Script"
       'JavaScript'.slice(0,-6) //"Java"
       'JavaScript'.slice(-2,-1) //"p"

如果第一个参数大于第二个参数(正数情况下),slice()方法返回一个空字符串。

       'JavaScript'.slice(5,4) //""

String.prototype.substring()

substring方法用于从原字符串取出子字符串并返回,不改变原字符串,跟slice方法很相像。他的第一个参数表示子字符串的开始位置,第二个位置表示结束位置(返回结果不含该位置)。

        'JavaScript'.substring(0,4) //"Java"

如果省略第二个参数,则表示子字符串一直到原字符串的结束。

        'JavaScript'.substring(4) //"Script"

如果第一个参数大于第二个参数,substring方法会自动更换两个参数的位置。

        'JavaScript'.substring(10,4) //"Script"
        'JavaScript'.substring(4,10) //"Script"

上面代码中,调换substring方法的两个参数,都得到同样的结果。

如果参数是负数,substring方法会自动将负数转为0。

        'JavaScript'.substring(-3) // "JavaScript"
        'JavaScript'.substring(4, -3) // "Java"

上面代码中,第二个例子的参数-3会自动变成0,等同于'JavaScript'.substring(4, 0)。由于第二个参数小于第一个参数,会自动互换位置,所以返回Java

由于这些规则违反直觉,因此不建议使用substring方法,应该优先使用slice

String.prototype.substr()

substr方法用于从原字符去除子字符串并返回,不改变原字符串,跟slicesubstring方法的作用相同。 substr方法的第一个参数是子字符串的开始位置(从0开始计算),第二个参数是子字符串长度。

         'JavaScript'.substr(4,6) //"Script"

如果忽略第二个参数,则表示子字符串一直到原字符串的结束

          'JavaScript'.substr(4) //"Script"

如果第一个参数是负数,表示倒数计算的字符位置。如果第二个参数是负数,将被自动转为0,因此会返回空字符串。

           'JavaScript'.substr(-6) //"Script"
           'JavaScript'.substr(4,-1) //""

上面代码中,第二个例子的参数-1自动转为0,表示子字符串长度为0,所以返回空字符串。

String.prototype.indexOf(),String.prototype.lastIndexOf()

indexOf方法用于确定一个字符串在另一个字符串中第一次出现的位置,返回结果是匹配开始的位置。如果返回-1,就表示不匹配。

            'hello world'.indexOf('o') //4
            'JavaScript'.indexOf('script') //-1

indexOf方法还可以接受第二个参数,表示从该位置开始向后匹配。

            'hello world'.indexOf('o',6) //7

lastindexOf方法的用法跟indexOf方法一致,主要的区别是lastindexOf从尾部开始匹配,indexOf则是从头部开始匹配。

            'hello world'.lastindexOf('o') //7

另外,lastindexOf的第二个参数表示从该位置起向前匹配。

            'hello world'.lastindexOf('o'6) //4

String.prototype.trim()

trim方法用于去除字符串两端的空格,返回一个新的字符串,不改变原字符串。

             '   hello world  '.trim()
             //"hello world"

该方法去除的不仅是空格,还包括制表符(\t,\v)、换行符(\n)和回车符(\r)。

              '\r\nabc \t'.trim() //'abc'

String.prototype.toLowerCase(),String.prototype.toUpperCase()

toLowerCase方法用于将一个字符串全部转为小写,toUpperCase则是全部转为大写。它们都返回一个新字符串,不改变原字符串。

             'Hello World'.toLowerCase()
             // "hello world"
             'hello world'.toUpperCase()
             // "HELLO WORLD"

String.prototype.match()

match方法用于确定原字符串是否匹配某个子字符串,返回一个数组,成员为匹配的第一个字符串。如果没有找到匹配,则返回null

             'cat,bat,sat,fat'.match('at')//["at"]
             'cat,bat,sat,fat'.match('xt')// null

返回的数组还有index属性和input属性,分别表示匹配字符串开始的位置和原始字符串。

             var matches = 'cat,bat,sat,fat'.match('at');
             matches.index // 1
             matches.input //"cat,bat,sat,fat"