【问题标题】:JavaScript equivalent of python string slicingJavaScript 等价于 python 字符串切片
【发布时间】:2015-11-26 11:50:46
【问题描述】:

是否有与这种 Python 字符串切片方法等效的 JavaScript?

>>> 'stackoverflow'[1:]
'tackoverflow'

我试过了:

// this crashes
console.log("stackoverflow".slice(1,));

// output doesn't print the last letter 'w'
console.log("stackoverflow".slice(1, -1));
// tackoverflo

【问题讨论】:

    标签: javascript python string slice


    【解决方案1】:

    只需使用不带逗号的s2.slice(1)

    【讨论】:

    • 准确来说语法是object.slice(start, end)
    【解决方案2】:

    请参阅 Array.prototype.sliceString.prototype.slice

    '1234567890'.slice(1, -1);            // String
    '1234567890'.split('').slice(1, -1);  // Array
    

    但是,Python 切片有步骤:

    '1234567890'[1:-1:2]
    

    但是*.prototype.slice 没有step 参数。为了解决这个问题,我写了slice.js。安装:

    npm install --save slice.js
    

    示例用法:

    import slice from 'slice.js';
    
    // for array
    const arr = slice([1, '2', 3, '4', 5, '6', 7, '8', 9, '0']);
    
    arr['2:5'];        // [3, '4', 5]
    arr[':-2'];        // [1, '2', 3, '4', 5, '6', 7, '8']
    arr['-2:'];        // [9, '0']
    arr['1:5:2'];      // ['2', '4']
    arr['5:1:-2'];     // ['6', '4']
    
    // for string
    const str = slice('1234567890');
    str['2:5'];        // '345'
    str[':-2'];        // '12345678'
    str['-2:'];        // '90'
    str['1:5:2'];      // '24'
    str['5:1:-2'];     // '64'
    

    【讨论】:

    • edit 解释这段代码如何回答这个问题,以及为什么这会比当前接受的答案更好。
    • 我认为这是一个合法的替代响应。它提供了一种方法来完成询问者的要求,同时让他们留在自己的舒适区。
    • 是的,但不是没有安装外部库。你是如何通过 vanilla JS 实现这一点的?
    【解决方案3】:

    或者你可以使用 substr

    s2 = s1.substr(1);
    

    【讨论】:

      【解决方案4】:

      切片

      Slice 是 Python 令人敬畏的负片的 JavaScript 实现 数组和字符串的索引和扩展切片语法。它使用 ES6 代理以允许直观的双括号索引语法 密切复制了切片在 Python 中的构造方式。哦,还有 还附带了 Python 的 range 方法的实现!

      我知道一个可以解决这个确切问题的软件包。

      你可以字面意思处理数组和字符串,无论你在 python 中做什么。

      安装这个包:

      yarn add slice
      // or
      npm install slice
      

      简单用例

      查看→ the docs ← 了解更多信息。

      【讨论】:

        【解决方案5】:

        只是改变

        console.log(s2.slice(1,-1));
        

        console.log(s2.slice(1,s2.length));
        

        您可以在MDN查看更多信息

        var s2 = "stackoverflow";
        alert(s2.slice(1, s2.length));

        【讨论】:

        • 两个索引(参数)都是从零开始的。所以你的代码不正确。为了获得'w'(根据OP的需要),应该使用s2.slice(-1)
        • 它适用于所需的输出:tackoverflow,正如您在编辑中看到的那样。它提供与接受的答案相同的输出
        猜你喜欢
        • 2021-07-30
        • 2016-03-19
        • 2014-07-21
        • 2012-02-15
        • 1970-01-01
        • 1970-01-01
        • 2013-10-29
        • 2020-11-27
        相关资源
        最近更新 更多