JS中String与Array的一些常用方法真钱捕鱼

生机勃勃、查找字符串的职责:indexOf("string"卡塔尔:查找字符串string在字符串中第二遍出现的职位;indexOf("string",numberState of Qatar:从number地点上马以后搜索字符串string在字符串中第一遍面世的职责;number为负数从侧边开端往右查找,直到字符串结束。 lastIndexOf("string"State of Qatar:查找字符串string在字符串中最终出现的岗位;lastIndexOf("string",number卡塔尔(قطر‎:从number地点上马以往寻觅字符串string在字符串中最后出现的地点;number为负数从右侧初叶往右查找,直到字符串截止。search("string"卡塔尔:和indexOf相仿,差距。二、截取字符串:slice、substring、substr比较措施参数参数为二个参数都为正参数为负slice

真是恨透了那几个看似于substring substr slice 要么长得像,要么就功效周边的办法。。。

Javascript有过多字符串的措施,有的人有W3C的API,还足以去MDN上去找,不过自个儿感到API上说的不全,MDN上又太多。。其实常用的就这一个,比比较多都可以用那个主意解出来。

接收的是开场地点和得了

1⃣️string

数不尽主意中有包容性的,在运用的时候,把宽容代码复制粘贴就能够。

位置

1.substring(start开第1地方的目录,end停止地点索引卡塔尔截取字符串

先贴上来数组和字符串的章程的相比,小编在就学的时候也是会混。所以做了小总括。之后就是数组方法和少年老成都部队分实例。如若有侧边栏就好了,看得就相比较清楚。

粗略结束地方参数,从参数地点上马截取

  截取的岗位不含有截止地点的字符,只写start表示从开首地方截取到结尾,end>start时,会暗中同意以小的参数为发端地点的目录

数组 字符串

到字符串结束,负参数从左开端往右截取

var str='abcdefg';  
str.substring(1) //bcdefg  
str.substring(1,3) //bc
str.substring(3,1) //bc

slice | slice substring 截取需求此前和终结index的

胚胎地点大于结束地点,

  输入负值时将负值变为0,并以十分小数字为截取开始地方的目录

splice | substr 截取须求早前index和截取长度的

返回空

str.substing(-1,1)  等价于str.substring(0,1) //a
str.substring(1,-2) 等价于str.substring(0,1) //a

concat | concat 都以连接,二个是连接数组,贰个是连连字符串

参数都为负:

2.slice(start开头地点索引,end停止地点索引卡塔尔国截取字符串

indexOf | indexOf 寻觅成分在不在里面,重临index值或然-1

从负参数起头截取到负参数停止

  基本和substring相像,但当end>start时,再次来到空字符串""

join | split 那正是八个反义词啊,相互转变的利器

//报错

var str='abcdefg'; 
str.slice(1)   //bcdefg      
str.slice(1,3)  // bc
str.slice(3,1) // ""
  • 截取方法中,字符串有两种办法slice / substring / substr ,数组方法有多个slice / splice
    里头字符串的slice 和 substring 是要在此之前和告竣的目录,substr 是要起来索引和尺寸
    数组的slice是要从头和了结索引,但是splice是要开始索引和长度
  • 寻找成分方法中,数组和字符串都有indexOf方法,然而字符串多出去三种方法charAt和charCodeAt
    里面indexOf是回到索引,charAt是重临索引对应的值,charCodeAt是回来对应值的ASCII码值。
  • 数组的遍历有4中方法,map,every,foreach,some,filter
    中间foreach伊始就停不下来,全部遍历。every遍历四个就判定一下,true就持续遍历下叁个,false就跳出。map便是边遍历边运算。some重回的是布尔值,相符正是true,不符合正是false。filter再次来到的是顺应成分构成的数组。
  • 日增数组元素,前边unshift,前面push
    移除数组成分,前面shift,前边pop
  • 数组和字符串都有concat方法,各自连接各自的,是数组就连选拔数组,字符串就连接成字符串
  • 很首要的五个正是数组和字符串之间的转速的五个章程
    join是数组转字符串,split是字符串转数组

发端为正,甘休为负:

  差距在参数为负数时,slice是负值与字符串的尺寸相加,当负值的相对值大于字符串长度时,值变为0,当第二个参数的断然值超过字符串长度时,再次回到空字符串""


从正参数早前截取到负参数甘休

str.slice(-1)    等价于str.slice(6)    //g
str.slice(1,-2)  等价于str.slice(1,5)  //bcde
str.slice(-2,-1) 等价于str.slice(5,6)  //f

str.slice(-10)   等价于str.substring(0)  //abcdefg
str.slice(0,-10) // ""`

字符串

最先为负,截至为正:重临为空

3.substr(start伊始地点索引,end供给再次来到的字符个数卡塔尔(قطر‎截取字符串

探求字符串

substring参数中有负值,将其转造成0。七个参数中相当小的一个看成发轫位置。substr

只传入start时,私下认可从start开头截取到终极三个

charAt(再次来到字符卡塔尔

str.charAt(index)

  • charAt(State of Qatar方法从叁个字符串中回到钦点的字符

  • index是0 ~ str.length-1 ,假如内定的index值超过了该节制,则赶回四个空字符串

  • 出口字符串中分歧职位的字符

    var anyString = "Brave new world";
    console.log("index 0   is '" + anyString.charAt(0)   + "'");
    console.log("index 1   is '" + anyString.charAt(1)   + "'");
    console.log("index 2   is '" + anyString.charAt(2)   + "'");
    console.log("index 3   is '" + anyString.charAt(3)   + "'");
    console.log("index 4   is '" + anyString.charAt(4)   + "'");
    console.log("index 999 is '" + anyString.charAt(999) + "'");
    
    //输出
    //  index 0 is 'B'
    //  index 1 is 'r'
    //  index 2 is 'a'
    //  index 3 is 'v'
    //  index 4 is 'e'
    //  index 999 is ''
    

收下的是发端位置和所要

var str='abcdefg'; 
str.substr(1) //bcdefg      
str.substr(1,1) //b

charCodeAt(返回ASCII)

str.charCodeAt(index)

  • 回到索引对应的字符的ASCII表对应的值,0-65535之间的整数,超过范围重回NaN

  • index : 0 ~ length-1,假若不是三个数值,则默以为0

    "ABC".charCodeAt(0) // returns 65
    

归来的字符串长度

输入负值时 start参数与字符串的长度相加 ,end为负时参数变为0,相当于回来空字符串""

indexOf(重回索引卡塔尔

str.indexOf(searchValue[, fromIndex])

  • searchValue 三个字符串表示被找出的值

  • fromIndex 可选。

    • fromIndex < 0 则查找整个字符串(就好像传进了 0)
    • 后生可畏旦 fromIndex >= str.length,则该办法再次回到 -1
    • 只要被寻觅的字符串是一个空字符串,此时回到 str.length
  • 找到第一个要素的职位,没找到重返-1

    "Hello apple".indexOf("Hello");    // return  0
    "Hello apple".indexOf("Heloo");    // return -1
    "Hello apple".indexOf("apple", 0); // return  6
    "Hello apple".indexOf("apple", 6); // return  6
    "Hello apple".indexOf("", 10);     // return  10
    "Hello apple".indexOf("", 11);     // return  10
    
    //区分大小写
    "Hello apple".indexOf("hello") // returns -1
    
    //检测是否存在某字符串
    "Hello apple".indexOf("hello") !== -1; // true
    "Hello apple".indexOf("heloo") !== -1; // false
    
  • 利用indexOf总计一个字符串中某些假名现身的次数

    var str = 'To be, or not to be, that is the question.';
    //计数
    var count = 0;
    //判断str中有没有e元素
    var pos = str.indexOf('e');
    //如果有e元素,循环
    while (pos !== -1) {
      //计数加一
      count++;
      //从索引加1的位置开始找e
      pos = str.indexOf('e', pos + 1);
    }
    console.log(count); // displays 4
    

和slice一样

 str.substr(-1) 等价于str.substr(6)//g         
 str.substr(-2,-3) // ''

lastIndexOf(重返索引卡塔尔(قطر‎

str.lastIndexOf(searchValue[, fromIndex])

  • searchValue 表示被寻觅的值

  • fromIndex 早前边找。

    • 暗中认可值为 str.length。如果为负值,则被用作 0。如若 fromIndex > str.length,则fromIndex被视作str.length
  • 回去值没找到为-1,找到的目录是在此以前未来的

    "canal".lastIndexOf("a")   // returns 3
    "canal".lastIndexOf("a",2) // returns 1
    "canal".lastIndexOf("a",0) // returns -1
    "canal".lastIndexOf("x")   // returns -1
    

归来字符串长度不可能为负值。

4.charAt(index)

截取字符串

万大器晚成参数为负,也正是截取字符串长度为0.

该方法用以再次回到钦命index处的字符,但当index为负数可能超过字符串长度时,重临空字符串""

slice(索引)

str.slice(beginSlice[, endSlice])

  • beginSlice 最先的字符索引,即便是复数,就strLength + beginSlice

  • endSlice 结束的字符索引。可选,假若轻便直接到终极,要是是负数就是strLength + endSlice

  • 领取字符串,重回字符串,包罗beginSlice,不包蕴endSlice

  • 动用slice(State of Qatar成立贰个新的字符串

    var str1 = 'The morning is upon us.';
    //从第五个开始到不连倒数第二个结束
    var str2 = str1.slice(4, -2);  // returns 'morning is upon u'
    var str2 = str.slice(-3);     // returns 'us.'
    var str2 = str.slice(-3, -1); // returns 'us'
    var str2 = str.slice(0, -1);  // returns 'The morning is upon us'
    console.log(str2); // OUTPUT: morning is upon u
    

三、替换字符串内容replace("旧的字符串","新字符串")结合正则表明式替换字符串:1.对大小写不敏感/i:

var str='abcdefg';
str.charAt(2) // c
str.charAt(-1) // ""
str.charAt(10) // ""

substring(索引)

str.substring(indexStart[, indexEnd])

  • indexStart 最早索引,0 ~ str.length

  • indexEnd 截止索引,可选。 0 ~ str.length,省略则到字符串结束

  • 几个参数小于0可能为NaN,被当做0,大于length,则当做length。假使开始超越结束,则结果和参数调换相通

    str.substring(1, 0) == str.substring(0, 1)

  • 截取初阶到甘休的字符串,重返新数组

    var anyString = "Mozilla";
    
    // 输出 "Moz"
    console.log(anyString.substring(0,3));
    console.log(anyString.substring(3,0));
    console.log(anyString.substring(3,-3));
    console.log(anyString.substring(3,NaN));
    console.log(anyString.substring(-2,3));
    console.log(anyString.substring(NaN,3));
    
    // 输出 "lla"
    console.log(anyString.substring(4,7));
    console.log(anyString.substring(7,4));
    
    // 输出 ""
    console.log(anyString.substring(4,4));
    
    // 输出 "Mozill"
    console.log(anyString.substring(0,6));
    
    // 输出 "Mozilla"
    console.log(anyString.substring(0,7));
    console.log(anyString.substring(0,10));
    
  • 改变三个字符串的子字符串

    //该例结尾调用的函数将 "Brave New World" 变成了 "Brave New Web"
    function replaceString(oldS, newS, fullS) {
    // Replaces oldS with newS in the string fullS
      for (var i = 0; i < fullS.length; i++) {
        if (fullS.substring(i, i + oldS.length) == oldS) {
         fullS = fullS.substring(0, i) + newS + fullS.substring(i + oldS.length, fullS.length);
        }
      }
      return fullS;
    }
    
    replaceString("World", "Web", "Brave New World");
    
    //需要注意的是,如果 oldS 是 newS 的子字符串将会导致死循环。例如,尝试把 "World" 替换成 "OtherWorld"。一个更好的方法如下:
    function replaceString(oldS, newS,fullS){
      return fullS.split(oldS).join(newS);
    }
    
    //更简单的要用replace
    
var str="good good study";var res=str.replace(/GOOD/ig,"day");//day good study(默认匹配首个字符串)

5.charCodeAt(index)

substr(长度)

str.substr(start[, length])

  • start 开首提取字符的任务。假诺为负值,则被看strLength + start

  • length 可选,提取的字符数。不写到结尾

  • 回到新字符串

    var str = "abcdefghij";
    
    console.log("(1,2): "    + str.substr(1,2));   // (1,2): bc
    console.log("(-3,2): "   + str.substr(-3,2));  // (-3,2): hi
    console.log("(-3): "     + str.substr(-3));    // (-3): hij
    console.log("(1): "      + str.substr(1));     // (1): bcdefghij
    console.log("(-20, 2): " + str.substr(-20,2)); // (-20, 2): ab
    console.log("(20, 2): "  + str.substr(20,2));  // (20, 2):
    
  • 特别,Microsoft's JScript 不帮助负的 start 索引

    // only run when the substr function is broken
    if ('ab'.substr(-1) != 'b')
    {
      /**
       *  Get the substring of a string
       *  @param  {integer}  start   where to start the substring
       *  @param  {integer}  length  how many characters to return
       *  @return {string}
       */
      String.prototype.substr = function(substr) {
        return function(start, length) {
          // did we get a negative start, calculate how much it is
          // from the beginning of the string
          if (start < 0) start = this.length + start;
    
          // call the original function
          return substr.call(this, start, length);
        }
      }(String.prototype.substr);
    }
    

2.全局替换:

该办法用于重返钦定地点的字符的 Unicode 编码。那一个重返值是 0 - 65535 之间的卡尺头。要是 index 是负数,或高于等于字符串的长度,则 charCodeAt(State of Qatar 重回 NaN。

改动大小写

var str="good good study";var res=str.replace(/GOOD/g,"day");//day day study
var str='abcdefg';
str.charCodeAt(1) //98
str.charCodeAt(-1) //NaN
str.charCodeAt(10) //NaN

toLocaleUpperCase

str.toLocaleUpperCase()

  • 回去小写转大写的字符串

    console.log('alphabet'.toLocaleUpperCase()); // 'ALPHABET'
    

四、转变为大写或小写:

6.indexOf(string)

toLocaleLowerCase

str.toLocaleLowerCase()

  • 回到大写转小写的字符串

    console.log('ALPHABET'.toLocaleLowerCase()); 
    // 'alphabet'
    
    console.log('中文简体 zh-CN || zh-Hans'.toLocaleLowerCase());
    // '中文简体 zh-cn || zh-hans'
    

toUpperCase(卡塔尔:将皆有字符串中的字母都转产生大写;

该方法再次来到字符串内率先次面太子君字符串的岗位。若无找到子字符串,则赶回-1。

交替字符串

toLowerCase(卡塔尔(قطر‎:将都有字符串中的字母都转形成小写;

var str='abcdefga'  
str.indexOf('a')  // 0   
str.indexOf('h') //-1

replace(生产条件不提议卡塔尔国

str.replace(regexp|substr,newSubStr|function)

  • regexp 正则对象或然其字面量,在进展全局替换时,要有g标识

  • substr 被替换的字符串

  • newSubStr 替换的新字符串(能够插入特殊字符串)

    | 变量名 | 代表的值 |
    | $$ | 插入四个"$" |
    | $& | 插入相配的子串 |
    | $` | 插入当前格外的子串左侧的内容 |
    | $' | 插入当前拾壹分的子串右侧的内容 |
    | $n | 要是第三个参数的正则对象,n是二个稍低于100的非负整数,那么插入第n个括号相配的字符串 |

  • function 创立新字符串的函数,函数重临值是替换的剧情,可是极度替换的参数不能够接纳

  • 再次来到值是被沟通过的新的字符串,不转移自己

    //下面的例子将会使 newString 'abc12345#$*%' 变成'abc - 12345 - #$*%'
    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);
    
  • 使用正则表明式

    //replace() 中使用了正则表达式及忽略大小写标示。
    var str = 'Twas the night before Xmas...';
    var newstr = str.replace(/xmas/i, 'Christmas');
    console.log(newstr);  // Twas the night before Christmas...
    
  • 使用global和ignore选项

    //下面的例子中,正则表达式包含有全局替换(g)和忽略大小写(i)的选项,这使得replace方法用'oranges'替换掉了所有出现的"apples".
    var re = /apples/gi;
    var str = "Apples are round, and apples are juicy.";
    var newstr = str.replace(re, "oranges");
    console.log(newstr);
    // oranges are round, and oranges are juicy.
    
  • 调换字符串中的五个单词

    //下面的例子演示了如何交换一个字符串中两个单词的位置,这个脚本使用$1 和 $2 代替替换文本
    var re = /(w+)s(w+)/;
    var str = "John Smith";
    var newstr = str.replace(re, "$2, $1");
    // Smith, John
    console.log(newstr);
    
  • 运用行内函数来改正相配到的字符

    //所有出现的大写字母转换为小写,并且在匹配位置前加一个连字符。重要的是,在返回一个替换了的字符串前需要在匹配元素前需要进行添加操作。
    
    //在返回前,替换函数允许匹配片段作为参数,并且将它和连字符进行连接作为新的片段。
    function styleFormat(name) {
      function lower(match) {
        return '-' + match.toLowerCase();
      }
      return name.replace(/[A-Z]/g, lower);
    }
    styleFormat('borderTop');  //返回 'border-top'
    //因为我们想在最终的替换中进一步转变匹配结果,所以我们必须使用一个函数。这迫使我们在使用toLowerCase()方法前进行评估。如果我们尝试不用一个函数进行匹配,那么使用toLowerCase() 方法将不会有效。
    
      var newString = propertyName.replace(/[A-Z]/g, '-' + '$&'.toLowerCase());  //报错
    
      //这是因为 $&.toLowerCase() 会先被解析成字符串字面量(这会导致相同的$&)而不是当作一个模式。
    
var str="good good study";console.log(str.toUpperCase());//全部转化大写(GOOD GOOD STUDY)console.log(str.toLowerCase());//全部转化小写(good good study)

7.lastIndexOf(string) 倒叙查找

拼接字符串

五、连接多少个字符串或三个concat(卡塔尔(قطر‎

与indexOf相反,该格局重临字符串内最后二回现身子字符串的职位。雷同的是,若无找到子字符串,则赶回-1。

concat

str.concat(string2, string3[, ..., stringN])

  • 将多个或多少个字符串和原字符串归总,并摇身生龙活虎变叁个新的字符串重返

  • 刚烈提出使用赋值操作符(+,+=卡塔尔代替concat方法

      var hello = "Hello, ";
      console.log(hello.concat("Kevin", " have a nice day."));
      /* Hello, Kevin have a nice day. */
    
  • 测验相比较 (+ > concat + joinState of Qatar 推荐应用

真钱捕鱼 1

concat.png

var one="hello",two="world",three="!!!";var x=one.concat("+","abc",three);console.log(x)//hello abc !!!var x=one.concat("+",two,three);console.log(x)//hello world !!!//--代替连接符var x= "hello".concat(" ","world");var x= "hello".concat(" ","world"," ","world");console.log(x)//hello world world
var str='abcdefga'  
str.lastIndexOf('a')  // 7
str.lastIndexOf('h') //-1

正如字符串

六、删除字符串两端的空白trim(卡塔尔

8.split(**separator分隔符,howmany分割再次来到数量**)

locateCompare

referenceStr.localeCompare(compareString[, locales[, options]])

  • referenceStr 援引字符串

  • compareStr 比较字符串

  • locales指的是比较的言语,options比较标准。那八个参数超级多浏览器不扶持,所以不用

  • 尽管援引字符串在可比字符串前边,重回-1,当援引字符串在可比字符串前边时回来1。相像地点再次回到0(差别浏览器的开始和结果,只关切正面与反面就可以)

    //一个字符一个字符比较
    'a'.localeCompare('c'); // -2 or -1 (or some other negative value)
    'check'.localeCompare('against'); // 2 or 1 (or some other positive value)
    'a'.localeCompare('a'); // 0
    
  • 检查浏览器对扩充参数的支持

    //locales 和 options 参数还没有被所有阅览器所支持。检查是否被支持, 使用 "i" 参数判断是否有异常 RangeError抛出
    function localeCompareSupportsLocales() {
      try {
        'foo'.localeCompare('bar', 'i');
      } catch (e) {
        return e.name === 'RangeError';
      }
      return false;
    }
    
//删除字符串两端的空白符trim()var str = " Hello World! ";console.log(str.trim());//Hello World;//去左空格;/*function ltrim(s){ return s.replace(/(^s*)/g,"");//去除左空格}*///去右空格;/*function rtrim(s){ return s.replace(/(s*$)/g,"");//去除右空格}*/console.log(ltrim(str));

该格局用于方法用于把二个字符串分割成字符串数组。假设把空字符串 (""卡塔尔 用作 separator,那么 stringObject 中的各个字符之间都会被细分。

去空格

七、提取字符串字符charAt(i卡塔尔(قطر‎

"hello".split("")       // ["h", "e", "l", "l", "o"]
"hello".split("", 3)    // ["h", "e", "l"]
("2:3:4:5").split(":")    //["2", "3", "4", "5"]
("|a|b|c").split("|")    //["", "a", "b", "c"]

trim

str.trim()

  • 去除字符串两端的空白字符,
  • 回到一个新字符串

    var orig = '   foo  ';
    console.log(orig.trim()); // 'foo'
    
  • 宽容难点,IE8及以下不可用

    if (!String.prototype.trim) {
      String.prototype.trim = function () {
        return this.replace(/^[suFEFFxA0]+|[suFEFFxA0]+$/g, '');
      };
    }
    
var str = "HELLO WORLD";console.log(str.charAt(0)); //H

9.replace(regexp,replacement)

切割字符串

八、重返字符串中内定索引的字符 unicode 编码

该办法用于在字符串中用一些字符替换另意气风发部分字符,或调换一个与正则表明式相配的子串。

split(数组)

str.split([separator[, limit]])

  • 将string对象分割成字符串数组,[]表示参数可选

  • 借使str是空字符串,split重返的是八个暗含空字符串的数组,并非二个空数组

  • separator 可以是多少个字符串或正则表达式

    • 若果没有separator则赶回整个字符串的数组情势
    • 要是separator是空字符串,则str将会把原字符串中每个字符的数组格局再次回到
    • 若是有字符串和表明式,则相配字符串,separator会从字符串中被移除,依照字符串分隔成子串,分别放入数组
  • limit 三个寸头,约束再次回到的划分片段的多少。split方法还是分割每二个天造地设的separator,可是回到的数组只会截取最多limit个要素。

    "Webkit Moz O ms Khtml".split( " " )   
    // ["Webkit", "Moz", "O", "ms", "Khtml"]
    
  • 界定重回值中分割成分数量

    var myString = "Hello World. How are you doing?";
    var splits = myString.split(" ", 3);
    console.log(splits);
    //["Hello", "World.", "How"]    length = 3
    
  • 抓获括号

    // separator 包含捕获括号(capturing parentheses),则其匹配结果将会包含在返回的数组中
    var myString = "Hello 1 word. Sentence number 2.";
    var splits = myString.split(/(d)/);
    console.log(splits);
    //[Hello ,1, word. Sentence number ,2,.]
    

©copyright burning.

var str = "HELLO WORLD";console.log(str.charCodeAt(0));//72 
var str='abcdefg'
str.replace(/a/,'12345') // '12345bcdefg'
返回列表