【问题标题】:Convert string.Split(',') into array of int将 string.Split(',') 转换为 int 数组
【发布时间】:2011-07-20 13:51:28
【问题描述】:

我有以下字符串:

"2,26,17,33,6,14,9,29,1"

还有一组intusedIds

如果我这样做:

private var usedIds:Array;
usedIds = "2,26,17,33,6,14,9,29,1".split(',');

我得到strings 的数组。

如何获得int 的数组?

【问题讨论】:

    标签: arrays string actionscript-3 split


    【解决方案1】:

    最简单的方法是使用 Linq:

    int[] usedIds = "2,26,17,33,6,14,9,29,1".split(',').Select(x => int.Parse(x)).ToArray();
    

    【讨论】:

    • 另一种最简单的答案是最好的……去看看。
    【解决方案2】:

    你可以试试这个:

    package 
    {
        import flash.display.Sprite;
        import flash.events.Event;
    
        public class Main extends Sprite 
        {
            public function Main():void 
            {
                if (stage) init();
                else addEventListener(Event.ADDED_TO_STAGE, init);
    
            }// end function
    
            private function init(e:Event = null):void 
            {
                removeEventListener(Event.ADDED_TO_STAGE, init);
    
                var string:String = "2,26,17,33,6,14,9,29,1";
    
                var strings:Array = string.split(',');
    
                var ints:Array = new Array();
    
                for each(var s:String in strings)
                {
                    ints.push(int(s));
    
                }// end for each
    
                trace(ints[0]) // output: 2
                trace(ints[0] is int) // output: true
    
            }// end function
    
        }// end class
    
    }// end package
    

    [更新]

    上面略短的版本是:

    var string:String = "2,26,17,33,6,14,9,29,1";
    
    var ints:Array = new Array();
    
    for each(var s:String in string.split(","))
    {
        ints.push(int(s));
    
    }// end for each
    
    trace(ints[0]) // output: 2
    trace(ints[0] is int) // output: true
    

    [更新 2]

    最短(不推荐):

    var ints:Array = [];
    
    for each(var s:String in "2,26,17,33,6,14,9,29,1".split(",")) ints.push(int(s));
    
    trace(ints[0]) // output: 2
    trace(ints[0] is int) // output: true
    

    【讨论】:

    • 我已经测试过,发现我需要更改为几乎相同的答案,所以 +1 给你!不过有一件事,用var array:Array = []; 定义一个空数组比new Array() 更有效
    • @shanethehat 感谢new Array() 提示的数组文字。
    【解决方案3】:

    另一个例子:

    var a:Array = "2,26,17,33,6,14,9,29,1".split(",");
    a.forEach(function(item:*, index:int, array:Array):void{
       array[index] = int(item);
    });
    

    【讨论】:

      【解决方案4】:

      您可能需要遍历您的数组并对其进行转换(已测试):

      function splitToInt($input:String,$delimiter:String):Array
      {
          var inArr:Array = $input.split($delimiter);
          var outArr:Array = [];
          for each(var index in inArr) {
              trace(index);
              outArr.push(int(index));
          }
          return outArr;  
      }
      
      var usedIds:Array = splitToInt("2,26,17,33,6,14,9,29,1",",");
      

      【讨论】:

      • +1 用于封装将String 元素转换为int 元素的逻辑。
      猜你喜欢
      • 2014-04-26
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-11
      • 1970-01-01
      相关资源
      最近更新 更多