从背面开始将字符串分开

时间:2019-04-30 13:07:57

标签: javascript regex

我遇到以下问题:

如果我有给定的字符串pkg:::fun(),我想将其拆分为长度为3的子字符串数组,即'abcdefg'

为此,我使用String.prototype.match():

[ 'abc', 'def']

但是,如果我的输入字符串的长度不能被3 'abcdefg'.match(/.{1,3}/g); 整除,则结果为'abcdefgh',但是我需要将结果为['abc', 'def', 'gh']

有没有一种优雅的方法?

3 个答案:

答案 0 :(得分:7)

对于以下三个字符的组合,您可以采取积极的态度。

console.log('abcdefgh'.match(/.{1,3}(?=(.{3})*$)/g));

答案 1 :(得分:1)

您可以首先reverse()字符串,然后使用match(),然后reverse()使用map()退回每个部分

const parts = str => [...str].reverse().join('').match(/.{1,3}/g).map(x => [...x].reverse().join('')).reverse();

console.log(parts('abcdefgh'))

答案 2 :(得分:1)

如何进行for循环:

  const result = [];

  for(let i = str.length - 1; i > 0; i -= 3)
     result.unshift(str.slice(Math.max(0, i - 3), i));