我遇到以下问题:
如果我有给定的字符串pkg:::fun()
,我想将其拆分为长度为3的子字符串数组,即'abcdefg'
为此,我使用String.prototype.match():
[ 'abc', 'def']
但是,如果我的输入字符串的长度不能被3 'abcdefg'.match(/.{1,3}/g);
整除,则结果为'abcdefgh'
,但是我需要将结果为['abc', 'def', 'gh']
。
有没有一种优雅的方法?
答案 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));