JavaScript 相当于 python 字符串切片

JavaScript equivalent of python string slicing

是否有 JavaScript 等同于此 Python 字符串切片方法?

>>> 'Whosebug'[1:]
'tackoverflow'

我试过:

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

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

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

或者你可以使用 substr

s2 = s1.substr(1);

只是改变

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

为了

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

您可以在 MDN

上查看更多信息

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

Array.prototype.slice and String.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'

切片

Slice is a JavaScript implementation of Python's awesome negative indexing and extended slice syntax for arrays and strings. It uses ES6 proxies to allow for an intuitive double-bracket indexing syntax which closely replicates how slices are constructed in Python. Oh, and it comes with an implementation of Python's range method too!

我知道一个解决这个问题的软件包。

叫做

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

安装这个包:

yarn add slice
// or
npm install slice

简单用例

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

如果您需要步骤参数,这里有一个解决方案

Array.prototype.slice_ = function(start,end,step=1) {
    return this.slice(start,end)
        .reduce((acc, e, i) => i % step == 0 
        ? [...acc, e] 
        : acc, []); 
}
console.log([1,2,3,4,5,6,7,8,9,10].slice_(1, 10, 2))