如何在JavaScript中将字符串的字母切成较小的固定长度块?

时间:2016-03-13 01:43:08

标签: javascript

提前感谢您花时间阅读。我是一个初学者,我知道这可能听起来其中一个"帮助我理解这个"问题但我很抱歉,如果是这样的话,我会尽可能地具体说明。

基本上我需要创建一个函数来将字符串切换成较小的输入长度字符串,我已经尝试过数组方法但是由于某种原因我不断得到一个空数组。因此输入字符串是"地狱"并且输入长度为2,输出将为["他"," ll]

此外,与此问题相关,我想知道您是否可以设置for循环条件x.length< = 0。

这是我的代码:

function chop(a, b) { 
    // a = "hell"
    // b = 2

    var ans = [];
    var x = a.split(""); // [h,e,l,l]

    for (var i = 0; i<=(x.length/b); i++) { 
        // condition i<=2
        // I was also wondering how can set the condition to be x.length <= 0

        x  = x.slice(0,(b-1));  // x = "he"
        ans.push(x); // ans = ["he", ]
        x = x.splice(0,b); // x = [l,l]

    }

    console.log(ans);

}

2 个答案:

答案 0 :(得分:2)

你可以这样做:

function chop(a, b) {

  var ans = [];

  for (var i = 0; i < a.length; i += b) {
    ans.push(a.substring(i, i + b));
  }
  console.log(ans);   
}

chop("hello", 2);  //logs ["he", "ll", "o"]

答案 1 :(得分:2)

如果使用正则表达式,这很简单:

"hello".match(/.{1,2}/g) || []; // ["he", "ll", "o"]

但是,如果你事先不知道第二个参数的值,那就更脏了:

function chop(a, b) {
  return a.match(new RegExp('.{1,'+b+'}','g')) || [];
}
chop("hello", 2); // ["he", "ll", "o"]

在这种情况下,在将b插入正则表达式之前进行清理是个好主意。