在JavaScript中如何按特定字符数量拆分字符串?

4
我希望将一个字符串按照每个字符进行分割,并放入数组中。该字符串为:
var string = "hello";

你会使用`.split()`吗?如果会,怎么用?

您的意思真的是标题中指定的“特定字符数”,还是像问题正文中所说的“每个单独字符”? - jball
我原以为它们是相关的。因为我认为在这种情况下应该是每个字符,但在其他情况下可能是每三个字符。我本来想问一个更广泛的问题,我认为它与此有关。 - chromedude
1
“某个数字”的解决方案可以得出“每一个单独的数字”的解决方案,但反过来则不一定成立。例如,@Harmen在下面的回答中提供的方法并不适用于将字符串分割为3个字符块的情况。 - jball
7个回答

10

我正在研究类似的问题..即在每两个字符之间进行分隔。阅读有关正则表达式的资料后,我想出了以下解决方案:

data = "0102034455dola";
arr = data.match(/../g);
结果是数组:["01","02","03","44","55","do","la"]

8

是的,您可以使用以下方法:

var str = "hello";

// returns ["h", "e", "l", "l", "o"]
var arr = str.split( '' ); 

好的,谢谢(我会在允许后15分钟内将您标记为答案)。 - chromedude

5

如果您真的想按照标题所述进行操作,那么以下方法应该有效:

function splitStringAtInterval (string, interval) {
var result = [];
for (var i=0; i<string.length; i+=interval)
  result.push(string.substring (i, i+interval));
return result;
}

谢谢,虽然那不是我实际问题的答案,但我会将这个答案作为未来参考。 - chromedude

1
var s= "hello";
s.split("");

0

这里有一个使用 while 循环的简单方法:

function splitStringAtInterval(str, len){
var len = 10;
var arr = [];
str = str.split("");
while(str.length > len){
    arr.push(str.splice(position,len).join(""));
}
if(str.length > 0)arr.push(str.join(""));
    return arr;
}

0
如果您想简短并且“实用”:
var input = 'abcdefghijklmn1234567890';
var arr = Array.prototype.slice.call(input), output = [];
while (arr.length) output.push(arr.splice(0, 3).join(''));

output; // ["abc", "def", "ghi", "jkl", "mn1", "234", "567", "890"]

0

如果您不想使用RegExp,您也可以选择这样做:

const splitEvery = (nth) => (str) =>
  Array.from(
    {length: Math.ceil(str.length / nth)},
    (_, index) => str.slice(index * nth, (index + 1) * nth)
  )

// example usage:
const splitEvery2nd = splitEvery(2)
const result = splitEvery2nd('hello')
// result is: ['he', 'll', 'o']

如果您想要切掉任何剩余的部分,请将 Math.ceil 替换为 Math.floor 调用。
理解:
此函数创建一个数组,其长度为切片数量,包含文本的预期部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接