zoukankan      html  css  js  c++  java
  • 数组与字符串中的关于截取的总结

      最近学习了数组与字符串,在练习的过程中,经常弄混数组中的slice,splice,以及字符串中的substr,substring,slice。然后自己总结了一下他们之间的区别。

    数组中的slice与splice

    slice(start_index,end_index)

    1. 不操作原数组,返回一个新数组
    2. 在数组选取的时候抽取不到下标为end_index的元素,即:类似于 start_index  <=   新数组   <  end_index
    3. end_index为负数时, 则它表示在原数组中的倒数第几个元素结束抽取
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        
    </body>
    <script>
        var arr = [1,2,3,4,5,6,7,8];
        //从start_index开始到end_index的前一位结束
        var res = arr.slice(1,5);
        console.log(res,arr);//[2, 3, 4, 5]   [1, 2, 3, 4, 5, 6, 7, 8]
    
        //只有start_index,会一直截取数组到最后一项
        var res = arr.slice(2);
        console.log(res); //[3, 4, 5, 6, 7, 8]
    
        //只有start_index,且start_index为负数,会从原数组中的倒数第几个元素开始提取,直到最后一项
        var res = arr.slice(-2);
        console.log(res); //[7, 8]
    
        //start_index,大于数组长度,返回空数组
        var res = arr.slice(9);
        console.log(res); //[]
    
        //slice中什么都不写,会默认从第一项截取到最后一项
        var res = arr.slice();
        console.log(res); //[1, 2, 3, 4, 5, 6, 7, 8]
    
        //start_index为负数,end_index为正数,返回空数组
        var res = arr.slice(-2,1);
        console.log(res);//[]
    
        //start_index为负数,end_index为负数
        //原数组中的倒数第"start_index"个元素到最后"end_index"个元素
        var res = arr.slice(-5,-2);
        console.log(res);//[4, 5, 6]
    
        //如果end_index大于数组长度,会截取到数组末尾
        var res = arr.slice(2,9);
        console.log(res);//[3, 4, 5, 6, 7, 8]
      
    
    
    </script>
    </html>
    View Code

     splice(start_index,length,replaceitem)

    1. 操作原数组的,同时将截取的数据返回到新的数组,原数组的长度也会改变
    2. replaceitem,截取之后在原来截取数组的位置新增的数据,可以有多个
    3. 选取范围:从start_index开始,选取"length"个数据
    4. 可以实现对数组的增加、修改、删除
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
        
    </body>
    <script>
        // var arr = [1,2,3,4,5,6,7,8];
    
        //以下没有添加replaceitem的情况,可以用作数组的删除操作
    
        //从下标 0开始,选取3个数据
        // var res = arr.splice(0,3);
        // console.log(res,arr);//[1, 2, 3]   [4, 5, 6, 7, 8]
    
        //如果start_index超出数组长度,则会返回空数组
        // var res = arr.splice(11,3);
        // console.log(res,arr);//[]  [1, 2, 3, 4, 5, 6, 7, 8]
    
        //如果start_index是负值,则表示起始位置是从数组末位开始的第几位(从-1计数)
        // var res = arr.splice(-3,2);
        // console.log(res,arr);//[6, 7]  [1, 2, 3, 4, 5, 8]
    
        // 如果start_index的绝对值大于数组的长度,则表示开始位置为第0位。
        // var res = arr.splice(-11,2);
        // console.log(res,arr);//[1, 2]  [3, 4, 5, 6, 7, 8]
    
        //如果 length 是 0 或者负数,则不移除元素。
        // var res = arr.splice(2,0);
        // console.log(res,arr);//[]  [1, 2, 3, 4, 5, 6, 7, 8]
    
        //添加replaceitem的情况,可以用作数组的修改,增加操作
        var arr = [1,2,3,4,5,6,7,8];
    
        //末尾新增,想加在数组的其他地方只需要改变splice的start_index即可
        // var res = arr.splice(8,0,"hello")
        // console.log(res,arr) //[] [1, 2, 3, 4, 5, 6, 7, 8, "hello"]
    
        //修改,截取掉不需要的项,换上需要的数据
        var res = arr.splice(6,1,"hello")
        console.log(res,arr) //[7]  [1, 2, 3, 4, 5, 6, "hello", 8]
    </script>
    </html>
    View Code

    字符串中的substr、substring、slice

    subStr(start_index,length)

    1. 选取范围:从start_index开始,选取"length"个数据
    2. 如果忽略 length,则 substr 提取字符,直到字符串末尾
    3. 如果 length 为 0 或负值,则 substr 返回一个空字符串。
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
    
    </body>
    <script>
        var str = "abcdefgh";
    
        var res = str.substr(1,3);
        console.log(res,str); //bcd abcdefgh
    
        //start_index 为正值,且大于或等于字符串的长度,则 substr 返回一个空字符串。
        var res = str.substr(10,3);
        console.log(res,str); // res结果为空     abcdefgh
    
        // start_index为负值,则 substr 把它作为从字符串末尾开始的一个字符索引。
        var res = str.substr(-3,2);
        console.log(res,str); //fg abcdefgh
    
         // start_index为负值,且绝对值大于字符串长度,则从0开始选取
        var res = str.substr(-20,2);
        console.log(res,str); //ab abcdefgh
    
        //如果忽略 length,则 substr 提取字符,直到字符串末尾。。
        var res = str.substr(-3);
        console.log(res,str); //fgh abcdefgh
    
        var res = str.substr(3);
        console.log(res,str); //defgh abcdefgh
    
        //如果 length 为 0 或负值,则 substr 返回一个空字符串。
        var res = str.substr(4,0)
        console.log(res); //
    </script>
    </html>
    View Code

    substring(start_index,end_index)

    1. 截取范围:从start_index开始到end_index之前的字符,不包括end

      

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    <body>
    
    </body>
    <script>
        var str = "abcdefghijk"
        var res = str.substring(2,5);
        console.log(res,str); //cde abcdefghijk
    
    
        // 如果省略 end_index, 提取字符一直到字符串末尾。
        var res = str.substring(2);
        console.log(res,str); //cdefghijk abcdefghijk
    
        // 如果任一参数小于 0 或为 NaN,则被当作 0。
        var res = str.substring(-1,5);
        console.log(res,str); //abcde abcdefghijk
    </script>
    </html>
    View Code

    slice(start_index,end)

      字符串中的slice和上面数组中的slice用法完全一致

    slice和substring区别

    1. substring不能直接接受负值作为参数,如果传递了一个负值,则默认使用0
    2. slice可以传递一个负数作为参数,将会从后边计算

     

     希望能对伙伴们起到作用,如果有伙伴发现不足之处,请伙伴们指点!

     最后,用一句诗与伙伴们共勉-----不经一番寒彻骨,怎得梅花扑鼻香!

  • 相关阅读:
    BZOJ 4511 洛谷3131 USACO 16.Jan 七子共
    Atcoder Code Festival 2017 qual C 10.22 D题题解
    hdu 5122(2014ACM/ICPC亚洲区北京站) K题 K.Bro Sorting
    HDU 5115 (2014ACM/ICPC亚洲区北京站) D题(Dire Wolf)
    POJ
    hihocoder 1032 最长回文子串(Manacher)
    hihocoder 1015 KMP算法
    Trie树 hihocoder 1014
    POJ 3468 线段树区间修改查询(Java,c++实现)
    atCoder Ants on a Circle(又是蚂蚁问题。。。)
  • 原文地址:https://www.cnblogs.com/mz33/p/12445649.html
Copyright © 2011-2022 走看看