美文网首页
Javascript 字符串

Javascript 字符串

作者: TingsLee | 来源:发表于2017-11-10 14:07 被阅读0次

    字符串在JS中是一种基础类型,也是很长用的一种类型,但是他有很多自己的方法可以使用,下面进行一下总结。

    1. length: 获取字符串的长度

      'hello world'.length    // 11
      
    2. charAt(): 返回在指定位置的字符

      'hello world'.charAt(4)   // o
      
    3. charCodeAt(): 返回指定位置的字符的 Unicode 编码。这个返回值是 0 - 65535 之间的整数。

      'hello world'.charCodeAt(4)   // 111
      

    4.concat():连接两个或多个字符串

      'hello world'.concat('123', '456')   // hello world123456
    

    一般使用+进行字符串的拼接,在ES6中可以使用``模版处理字符串拼接问题,更高效,方便。

    1. fromCharCode(): 可接受一个指定的 Unicode 值,然后返回一个字符串,是charCodeAt的逆过程。

       String.fromCharCode(72,69,76,76,79)   // 'HELLO'
      
    2. indexOf(): 可返回某个指定的字符串值在字符串中首次出现的位置

       'hello world'.indexOf('l', 1)     // 2
      
    3. toLowerCase(): 把字符串转换为小写

       'HELLO WORLD'.toLowerCase() // hello world
      
    4. toUpperCase() : 把字符串转换为大写。

      'hello world'.toUpperCase() // HELLO WORLD

    以上方法比较使用起来比较容易,下面介绍的方法使用起来稍微复杂,replace, 但是也更长用到:

    1. split(): 把一个字符串分割成字符串数组
      用法:stringObject.split(separator,howmany)
      separator必需。字符串或正则表达式,从该参数指定的地方分割 stringObject。
      howmany可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。

      'hello world'.split(' ') // ['hello', 'world']
      'hello world'.split(/\s/) // ['hello', 'world']
      'hello world'.split(' ' , 1) // ['hello']
      

    String.split() 执行的操作与Array.join 执行的操作是相反的

    1. seach(): 用于检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串

      'hello world'.search('l') // 2
      'hello world'.search(/\s/) // 5
      

    search()方法不执行全局匹配,它将忽略标志 g。它同时忽略 regexplastIndex 属性,并且总是从字符串的开始进行检索,这意味着它总是返回 stringObject 的第一个匹配的位置。

    1. substring(),slice()和substr()
      这两个方法很相似,在这里对比说明一下。

    substring(start, stop): 提取字符串中两个指定的索引号之间的字符,不接受负参数
    substr(start, length): 从起始索引号提取字符串中指定数目的字符

    slice(start,end): 可提取字符串的某个部分,并以新的字符串返回被提取的部分
    start:要抽取的片断的起始下标。如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推
    end: 紧接着要抽取的片段的结尾的下标。若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。

      '01234567'.slice(1, 4) // 123
      '01234567'.slice(-4) // 4567
    

    其他情况请自己尝试,大同小异。

    String 对象的方法 slice()、substring() 和 substr() (不建议使用)都可返回字符串的指定部分。slice() 比 substring() 要灵活一些,因为它允许使用负数作为参数。slice() 与 substr() 有所不同,因为它用两个字符的位置来指定子串,而 substr() 则用字符位置和长度来指定子串。

    1. match(): 方法可在字符串内检索指定的值,或找到一个或多个正则表达式的匹配

      // 正则带g
      var url = 'http://www.baidu.com?a=1&b=2&c=3';
      var reg = /([^?&=]+)=([^?&=])*/g;
      var result = url.match(reg);
      console.log(result); //["a=1", "b=2", "c=3"]
      // 正则不带g
      var url = 'http://www.baidu.com?a=1&b=2&c=3';
      var reg = /([^?&=]+)=([^?&=])*/;
      var result = url.match(reg);
      console.log(result); //["a=1", "a", "1", index: 21, input: "http://www.baidu.com?a=1&b=2&c=3"
      

    13.replace(): 用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串

    用法: stringObject.replace(regexp/substr,replacement)

    regexp/substr 必需。规定子字符串或要替换的模式的 RegExp 对象。

    请注意,如果该值是一个字符串,则将它作为要检索的直接量文本模式,而不是首先被转换为 RegExp 对象。

    replacement 必需。一个字符串值。规定了替换文本或生成替换文本的函数

    如果regexp 具有全局标志g,那么replace() 方法将替换所有匹配的子串。否则,它只替换第一个匹配子串。

    字符替换文本
    $1、$2、...、$99 与 regexp 中的第 1 到第 99 个子表达式相匹配的文本。
    $& 与 regexp 相匹配的子串。
    $` 位于匹配子串左侧的文本。
    $' 位于匹配子串右侧的文本。
    $$ 直接量符号。

      'hello world'.replace(/(w)orld/, '$1!')  // hello w!
      'hello world'.replace(/(w)orld$/, '$&!') // hello world!
      'hello world'.replace(/(w)orld$/, '$`!') // hello hello !
      'hello world'.replace(/(w)orld/, "$'!") // hello !
      'hello world'.replace(/(w)orld/, "$$!") //hello $!
    

    如果第二个参数传入了一个函数,在这种情况下,每个匹配都调用该函数,它返回的字符串将作为替换文本使用。该函数的第一个参数是匹配模式的字符串。接下来的参数是与模式中的子表达式匹配的字符串,可以有 0 个或多个这样的参数。接下来的参数是一个整数,声明了匹配在 stringObject 中出现的位置。最后一个参数是 stringObject 本身。

       function replacer(match, p1, p2, p3, offset, string) {
        // p1 is nondigits, p2 digits, and p3 non-alphanumerics
        return [p1, p2, p3].join(' - ');
      }
      var newString = 'abc12345#$*%'.replace(/([^\d]*)(\d*)([^\w]*)/, replacer);
      console.log(newString);  // abc - 12345 - #$*%`
    

    相关文章

      网友评论

          本文标题:Javascript 字符串

          本文链接:https://www.haomeiwen.com/subject/jkfrmxtx.html