如何将字符串拆分为n个字符的片段?

2022-08-30 00:15:02

正如标题所说,我有一个字符串,我想分成n个字符的片段。

例如:

var str = 'abcdefghijkl';

经过一些魔法用,它会变成n=3

var arr = ['abc','def','ghi','jkl'];

有没有办法做到这一点?


答案 1

var str = 'abcdefghijkl';
console.log(str.match(/.{1,3}/g));

注意:不要只使用不是 3 的倍数的字符串长度的余数,例如:{1,3}{3}

console.log("abcd".match(/.{1,3}/g)); // ["abc", "d"]

还有几个微妙之处:

  1. 如果您的字符串可能包含换行符(您希望将其计为字符而不是拆分字符串),则不会捕获这些换行符。请改用。(谢谢@Mike)。./[\s\S]{1,3}/
  2. 如果您的字符串为空,则 将在您可能需要空数组时返回。通过附加 来防止这种情况。match()null|| []

因此,您可能最终会得到:

var str = 'abcdef \t\r\nghijkl';
var parts = str.match(/[\s\S]{1,3}/g) || [];
console.log(parts);

console.log(''.match(/[\s\S]{1,3}/g) || []);

答案 2

如果您不想使用正则表达式...

var chunks = [];

for (var i = 0, charsLength = str.length; i < charsLength; i += 3) {
    chunks.push(str.substring(i, i + 3));
}

jsFiddle.

...否则,正则表达式解决方案非常好:)