【问题标题】:How do you split a string at certain character numbers in javascript?你如何在javascript中的某些字符编号处拆分字符串?
【发布时间】:2010-10-25 18:34:53
【问题描述】:

我想在每个字符处拆分一个字符串并放入一个数组中。字符串是:

var string = "hello";

你会使用.split() 吗?如果有怎么办?

【问题讨论】:

  • 您是指标题中指定的“某些字符数字”,还是问题正文中指定的“每个字符”?
  • 我认为它们是相关的。因为我认为在这种情况下会是每 1 个字符,但在其他情况下可能是每三个字符。我打算提出一个我认为相关的更广泛的问题。
  • “某个数”的解产生“每一个”的解,但反过来不一定正确。例如,@Harmen 下面的回答是将字符串拆分为 3 个字符块的奇怪起点。

标签: javascript


【解决方案1】:

我正在研究一个类似的问题.. 打破所有其他角色。在阅读了正则表达式之后,我想出了这个:

data = "0102034455dola";
arr = data.match(/../g);

结果是数组:["01","02","03","44","55","do","la"]

【讨论】:

    【解决方案2】:

    是的,您可以使用:

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

    【讨论】:

    • 好的,谢谢(一旦我被允许 [15 分钟后],我会将您标记为答案)
    【解决方案3】:

    如果你真的想按照标题中描述的那样做,这应该可行:

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

    【讨论】:

    • 谢谢,尽管这不是我的实际问题,但我一直在寻找这个答案以供将来参考。
    【解决方案4】:
    var s= "hello";
    s.split("");
    

    【讨论】:

      【解决方案5】:

      这是一个使用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;
      }
      

      【讨论】:

        【解决方案6】:

        如果您希望它简短且“实用”:

        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"]
        

        【讨论】:

          【解决方案7】:

          如果您不想使用 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 调用。

          理解:

          此函数创建一个数组,其长度为切片数,包含文本的预期部分。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2013-01-03
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-12-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多