【问题标题】:Convert String to Array in Javascript in pair [duplicate]成对在Javascript中将字符串转换为数组[重复]
【发布时间】:2016-09-20 01:39:18
【问题描述】:

我有一个类似的字符串

var str = "aabbrdfc0912";

我想把它转换成一个数组,像两个一样

var arr = ["aa","bb","rd","fc","09","12"]; 

请提出建议。

【问题讨论】:

    标签: javascript


    【解决方案1】:

    您可以使用match 函数和一个小的正则表达式来做到这一点:

    var even_str = "aabbrdfc0912",
        odd_str = "aabbrdfc0912X";
    
    console.log( splitInPairs(even_str) );
    console.log( splitInPairs(odd_str) );
    
    function splitInPairs(str) {
        return str.match(/..?/g);
    }

    【讨论】:

      【解决方案2】:

      你可以使用正则表达式。

      var str = "aabbrdfc0912",
          array = str.match(/..|./g);
      console.log(array);

      【讨论】:

        【解决方案3】:

        String.match(rg) 会让你这样做:

        console.log("aabbrdfc0912".match(/\w\w/g))

        【讨论】:

          【解决方案4】:

          For-loop 增加 2 可能会有所帮助。

          var str = "aabbrdfc09123";;
          var op = [];
          for (var i = 0; i < str.length; i += 2) {
            op.push(str[i] + (str[i + 1] || ''));
          }
          console.log(op);

          【讨论】:

            【解决方案5】:
            var arr = str.match(/.{1,2}/g);
            

            会给你结果

            ["aa","bb","rd","fc","09","12"]; 
            

            【讨论】:

              【解决方案6】:

              使用String.split、Array.slice 和Array.forEach 函数的另一种解决方案:

              var str = "aabbrdfc0912", result = [];
              
              str.split('').forEach(function(v, k, arr){
                 if (k % 2 !== 0) this.push(arr.slice(k-1, k+1).join(''));
              }, result);
              
              console.log(result);  // ["aa", "bb", "rd", "fc", "09", "12"]
              

              还有一种使用 String.split 和 Array.filter 方法的方法:

              result = str.split(/(\w{2})/).filter(Boolean);
              
              console.log(result);  // ["aa", "bb", "rd", "fc", "09", "12"]
              

              【讨论】:

                【解决方案7】:

                其中一个可能的正则表达式可能是/[\w]{2}/g

                var str = "aabbrdfc0912", splited_arr;
                
                splitted_arr = str.match(/[\w]{2}/g);
                console.log(splitted_arr);

                【讨论】:

                  【解决方案8】:

                  嗯,这也可以代替正则表达式,

                  var str = "aabbrdfc0912";
                  var result = [];
                  var piece = 2;
                  
                  while (str.length) {
                    result.push(str.slice(0, piece));
                    str = str.substr(piece);
                  }
                  
                  console.log(result);
                  // result = ["aa","bb","rd","fc","09","12"];

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-10-20
                    • 1970-01-01
                    • 1970-01-01
                    • 2019-07-29
                    • 1970-01-01
                    • 2011-12-06
                    • 2020-11-15
                    相关资源
                    最近更新 更多