zoukankan      html  css  js  c++  java
  • 字符串方法集锦

    字符串处理截取slice、substring、substr的异同

    在项目开发过中,字符串是一种很特殊的东西,不可逃避地要经常对其处理,截取获得某几个字符是一种经常的事情。然而,在面试题中也经常出现对字符串处理的一些问题,尤其一些大公司,比如:慧*网,最近看其面试题中就有一道:说一下falsh编程中slice()、substring()、substr()的相同点和不同点?

      分析该题,其实并不难,但很基础,很多人都用过这三个方法,但都是基于js的,至于falsh编程,由于其as也是基于ECMA262标准的脚本语言,所以没什么不同。

      相同点:三个方法都是截取字符串中的子字符串,并返回子字符串,对原字符串不修改。三个方法都可以接收两个参数,第一个参数是子字符串的开始索引,第二个参数则有所区别。如果省略第二个参数则会截取到字符串的结尾。另外三个方法还都可以接收负数的参数,此时则是它们最大的区别之处。

      不同点:slice()和substring()接收的第二个参数表示子字符串的结束索引的后面的字符索引,可以理解不包括该索引的子字符串。substr()的第二个参数则表示截取的字符串的长度。

      在参数为负数时,slice()则会把参数中无论一个负数还是两个负数,按字符串.length与该负数相加的方式转换为正数,然后再根据正数的方式,从开始索引到结束索引(不包含)的方式截取子字符串,如果转换后的负数还是负数不会继续进行转换。

    var str="abcdef";

    console.log(str.slice(0));//abcdef

    console.log(str.slice(0,3));//abc

    console.log(str.slice(-4,3));//c

    console.log(str.slice(-3,-1));//截取(6-3, 6-1),得到de

    console.log(str.slice(-10,6));//"abcdef",6-10=-4到6,得到abcdef

    var str1 = "The morning is upon us.";
    console.log(str1.slice(4, -2));   //  morning is upon u

    var str = "The morning is upon us.";
    str.slice(-3);     // "us."
    str.slice(-3, -1); // "us"
    str.slice(0, -1);  // "The morning is upon us"

      substring()方法在参数为正数时与slice()没有什么区别,唯一的一个特点就是当第二个参数小于第一个参数时,它会把小的参数当作第一个截取的开始索引,大的参数当作结束位置索引(不包含该位置的字符),参数为负数时自动归0。

    var str="abcdef";

    console.log(str.substring(6,0));//会自动翻转,得到0到6之间的字符abcde

      参数是负数时,则把负参数归为0

    console.log(str.substring(-100,3));//计算得到0到3之间的字符abc

    console.log(str.substring(-1,-9));//0到0之间的字符“”

    // assumes a print function is defined
    var anyString = "Mozilla";

    // Displays "Moz"
    console.log(anyString.substring(0,3));
    console.log(anyString.substring(3,0));

    // Displays "lla"
    console.log(anyString.substring(4,7));
    console.log(anyString.substring(7,4));

    // Displays "Mozill"
    console.log(anyString.substring(0,6));

    // Displays "Mozilla"
    console.log(anyString.substring(0,7));
    console.log(anyString.substring(0,10));

      substr()方法在参数为负数时,第一个参数如果为负数,则按字符串.length+第一个参数的方式转换为正数,如果第二个参数为负数则归为0。

    var str="abcdef";

    console.log(str.substr(-6,-100));//从0开始截取0个字符得到“”

    console.log(str.substr(-6));//从0开始到结束得到abcdef

    var str = "abcdefghij";

    console.log("(1): "      + str.substr(1));     // (1): bcdefghij
    console.log("(1,2): "    + str.substr(1,2));   // (1,2): bc

    console.log("(-3): "     + str.substr(-3));    // (-3): hij
    console.log("(-3,2): "   + str.substr(-3,2));  // (-3,2): hi

    console.log("(20, 2): "  + str.substr(20,2));  // (20, 2):
    console.log("(-20, 2): " + str.substr(-20,2)); // (-20, 2): ab

    // ie8及以下
    console.log("(-3): " + str.substr(-2)); // (-20, 2): hij
    console.log("(-3, 2): " + str.substr(-2)); // (-20, 2): ab

      至此三个方法的异同点总结完毕。

  • 相关阅读:
    实验五——循环结构学习总结
    实验七——函数定义及调用总结
    实验九——基本数据类型存储及应用总结
    实验六——循环结构程序练习总结
    第二次作业及总结——数据类型和运算符
    实验八——函数定义及调用总结
    实验四——多分支结构及本章总结
    开篇随笔
    第三次作业——for 语句及分支结构elseif
    第二次作业
  • 原文地址:https://www.cnblogs.com/chaoyuehedy/p/5664165.html
Copyright © 2011-2022 走看看