JavaScript的字符串拼接、截取

JavaScript字符串拼接

作为前端工程师,大部份时候在和营业作斗争,固然可能有一些破例,不过大致如是,而在处置惩罚营业时总会和字符串打交道,而字符串的拼接和截取是没法防止的,这里对这些部份举行一些探究。

JavaScript字符串拼接

现在本文盘算探究的要领包含:

  • +=

  • Array.prototype.join【数组】

  • String.prototype.concat [字符串]

这是比较罕见的要领;代码以下:

var arrayTest = [];
for(var i=0;i<1000000;i++){
    arrayTest.push(i);
}

//test += used time
var startTimex,
    endTimex,
    resx;
startTimex = new Date().getTime();
for(var x=0, xlen=arrayTest.length; x<xlen; x++){
    resx += arrayTest[x] + '_';
}
console.log(new Date().getTime() - startTimex);
console.log("use += method need time");

// use join
var startTimey,
    endTimey,
    resy;
startTimey = new Date().getTime();
resy = arrayTest.join('_');
console.log(new Date().getTime() - startTimey);
console.log("use join method need time");

// use join but array need handle
var startTimez,
    endTimez,
    arrayHandle=[],
    resz;
startTimez = new Date().getTime();
for(var z=0, zlen=arrayTest.length; z<zlen; z++){
    arrayHandle.push(arrayTest[z]);
}
resz = arrayHandle.join('_');
console.log(new Date().getTime() - startTimez);
console.log("use join method and handle array need time");

//use string concat method
var startTimem,
    endTimem,
    resm;
startTimem = new Date().getTime();
for(var m=0, mlen=arrayTest.length; m<mlen; m++){
    resm = String.prototype.concat(resm, '-', arrayTest[m]);
}
console.log(new Date().getTime() - startTimem);
console.log("use string concat method need time");

运转测试只是运用了firefox、chrome、safari;效果以下:

  1. chrome测试效果:
    《JavaScript的字符串拼接、截取》《JavaScript的字符串拼接、截取》

  2. firefox效果:
    《JavaScript的字符串拼接、截取》《JavaScript的字符串拼接、截取》

  3. safari效果:
    《JavaScript的字符串拼接、截取》《JavaScript的字符串拼接、截取》

因为测试的浏览器都比较的新,所以上面的效果表明是join的要领照样效力要高点,不过这是在巨大的数据拼接上表现的,平常营业也不会有这么大的拼接,所以实在这个题目已不大了,没有必要举行特地的注重。

字符串的截取

运用的要领是slice、substr、substring 三种要领;

slice:

运用要领:string.slice(start,end)
参数申明
start 必须. 要抽取的片断的肇端下标。第一个字符位置为 0
end 可选。 紧接着要抽取的片断的末端的下标。若未指定此参数,则要提取的子串包含 start 到原字符串末端的字符串。假如该参数是负数,那末它划定的是从字符串的尾部最先算起的位置。
返回值:String 提取的字符串

substr

语法: string.substr(start,length)
参数值
start 必须。要抽取的子串的肇端下标。必须是数值。假如是负数,那末该参数声明从字符串的尾部最先算起的位置。也就是说,-1 指字符串中末了一个字符,-2 指倒数第二个字符,以此类推。
length 可选。子串中的字符数。必须是数值。假如省略了该参数,那末返回从 stringObject 的最先位置到末端的字串。
返回值
String A new string containing the extracted part of the text

substring

语法:string.substring(from, to)
参数
from 必须。一个非负的整数,划定要提取的子串的第一个字符在 string Object 中的位置。
to 可选。一个非负的整数,比要提取的子串的末了一个字符在 string Object 中的位置多 1。
假如省略该参数,那末返回的子串会一直到字符串的末端。

区分

三个要领之间的重要区分以下:

  • 三个要领的参数1都代表子串最先位置,参数2在slice和substring中示意完毕位置,而在substr中代表的则是子串长度;

  • 关于负数立场,当出现在参数1的位置时,slice和substr从末端最先盘算,而substring不支持末端计数法直接视为0;当出现在参数2位置时,slice和substring的处置惩罚同参数1:前者从末端最先盘算,后者转换成0,而substr则视负数长度为0返回空串;

  • 关于参数1小于参数2的状况,substring最大的差别在于它会交流两个参数再截取子串,substr因第二参数示意的是长度因而并没有非常,slice曽依旧一般征采子串委曲位置,若最先位置在末端后边则返回空串。

    原文作者:caoweiju
    原文地址: https://segmentfault.com/a/1190000010198466
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞