【问题标题】:Split a string, at every nth position, with JavaScript? [duplicate]使用 JavaScript 在每个第 n 个位置拆分一个字符串? [复制]
【发布时间】:2012-09-23 02:20:12
【问题描述】:

我有以下字符串:

foofaafoofaafoofaafoofaafoofaa

一个有 10 行的数组(如果我按每个第 3 个字符分割),如果我要实例化它,它看起来像这样:

var fooarray = new Array ('foo', 'faa', 'foo', 'faa', 'foo', 'faa', 'foo', 'faa', 'foo', 'faa');

所以我想要一个函数,无论是内置的还是定制的,它可以帮助我将字符串按第 n 个字符分割。

【问题讨论】:

标签: javascript string


【解决方案1】:

试试下面的代码:

var foo = "foofaafoofaafoofaafoofaafoofaa";
console.log( foo.match(/.{1,3}/g) );

第n个位置:

foo.match(new RegExp('.{1,' + n + '}', 'g'));

【讨论】:

  • @xdazz 但是 OP 说每第 n 个位置;您的正则表达式固定为 3。将其概括为赞成票。 :)
  • 你能用正则表达式从右到左拆分它吗?
  • @vsync:我不知道这在 general 的情况下是否可行,但也许你可以反转输入字符串,进行匹配,然后反转输出?
  • 布拉沃我的朋友,这是一个非常好的正则表达式使用
【解决方案2】:

var s = "foofaafoofaafoofaafoofaafoofaa";
var a = [];
var i = 3;

do{ a.push(s.substring(0, i)) } 
while( (s = s.substring(i, s.length)) != "" );

console.log( a )

打印:

foo,faa,foo,faa,foo,faa,foo,faa,foo,faa

工作演示:http://jsfiddle.net/9RXTW/

【讨论】:

    【解决方案3】:

    在我写这篇文章的时候,@xdazz 想出了一个非常简单的正则表达式解决方案。

    正如您已要求(对该答案的 cmets)提供非正则表达式解决方案,无论如何我都会提交这个...

    function splitNChars(txt, num) {
      var result = [];
      for (var i = 0; i < txt.length; i += num) {
        result.push(txt.substr(i, num));
      }
      return result;
    }
    
    splitNChars("foofaafoofaafoofaafoofaafoofaa",3);
    

    JSFiddle Demo

    【讨论】:

    • 另外,array 也不是一个好的变量名。即使认为 Javascript 区分大小写,它也可能会造成混淆。
    【解决方案4】:

    你可以这样做:

    var input = "foofaafoofaafoofaafoofaafoofaa";
    
    var result = [];
    while (input.length) {
        result.push(input.substr(0, 3));
        input = input.substr(3);
    }
    

    演示:http://jsfiddle.net/Guffa/yAZJ2/

    【讨论】:

      【解决方案5】:

      正如 Mark Walter 所指出的,another Stack Overflow question 的这个解决方案非常有效:

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

      【讨论】:

        【解决方案6】:

        函数后面是一个使用它的例子。示例测试输出:["abc","def","ghi","j"]

        function splitEvery(str, n)
        {
            var arr = new Array;
            for (var i = 0; i < str.length; i += n)
            {
                arr.push(str.substr(i, n));
            }
            return arr;
        }
        
        var result = splitEvery('abcdefghij', 3);
        document.write(JSON.stringify(result));
        

        【讨论】:

          猜你喜欢
          • 2022-01-15
          • 2012-03-17
          • 1970-01-01
          • 2011-05-07
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多