【问题标题】:How do I divide a complex string into 3 seperate arrays?如何将一个复杂的字符串分成 3 个单独的数组?
【发布时间】:2010-07-23 15:09:13
【问题描述】:

我在这里:
我从一个数组开始...使用“正则表达式”对其进行清理。
现在我有了这个......每个项目都有三个值

  • mystring = 4|black|cat, 7|red|dog, 12|blue|fish

这是我想去的地方:
我想最终得到三个数组。

  • array1=("4","7","12")
  • array2=("black","re​​d","blue")
  • array3=("cat","dog","fish")

我也想在不离开页面的情况下执行此操作...最好使用 javascript
我理解理论,但我在语法上纠结。

【问题讨论】:

  • 你从一个数组开始,你想以多个数组结束……为什么要通过字符串绕道?原始数组是什么样子的?
  • 我听到了,但实际上开始时要复杂得多...我有一个 PHP SOAP 响应 - - "Method","ItemNo,1|23|book1,4|34,book2, 32|340|book3" - - 我需要从 (Method & ItemNo) 中提取 2 个变量,留下我推入第三个变量(这个愚蠢的字符串)的值,其中一部分将用于填充下拉列表。我敢肯定这不是最有说服力的过程,但它也是一个学习的过程,哈哈。

标签: javascript string arrays


【解决方案1】:

我会在这里使用 John Resig 著名的 "search and don't replace" 方法,它非常适合:

var arr1 = [], arr2 = [], arr3 = [],
    mystring = "4|black|cat, 7|red|dog, 12|blue|fish";

mystring.replace(/(\d+)\|([^\|]+)\|([^,]+)/g, function ($0, $1, $2, $3) { 
    arr1.push($1);
    arr2.push($2);
    arr3.push($3);
}); 

Example

【讨论】:

    【解决方案2】:

    你想使用 split() 方法:

    var res = mystring.split(','); //will give you an array of three strings
    var subres = res[0].split('|'); //will give you an array with [4, black, cat]
    
    //etc...
    

    【讨论】:

    • 一旦你有了它,你可以抓住每个数组的第一个索引来使你的数组​​成为一个,并对 2 和 3 做同样的事情。这似乎是个好主意,只要我了解你的问题。
    【解决方案3】:

    像这样?:

    var values = mystring.split(',');
    
    var arrays = new Array();
    
    for(var i=0; i < values.length; i++) {
        var parts = values[i].split('|');
        for(var j = 0; j < parts.length;j++) {
            if(!arrays[j]) {
                arrays[j] = new Array();
            }
            arrays[j].push(parts[j]);
        }
    }
    

    会给你一个包含这三个数组的数组。

    【讨论】:

      【解决方案4】:
         var str = '4|black|cat, 7|red|dog, 12|blue|fish';
      
         var tmp = str.split(',');
      
         var firstArray = Array();
         var secondArray = Array();
         var thirdArray = Array();
      
         for( var i in tmp ){
              var splitted = tmp[i].split('|');
              //alert(true);
              firstArray[i]=splitted[0];
              secondArray[i]=splitted[1];
              thirdArray[i]=splitted[2];
         }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-13
        • 2020-07-30
        • 1970-01-01
        相关资源
        最近更新 更多