Чтение набора чисел из текстового файла - PullRequest
1 голос
/ 05 декабря 2011

Я некоторое время работал над проектом, но застрял там, где у меня есть текстовый файл, который содержит набор чисел в этом формате:

1-2-3-4
1-2-3-4
1-2-3-4
1-2-3-4

Так что я должен прочитать цифры изфайл и положить их в массив в соответствии с колонкой, поэтому в конце у меня есть

column1:Array (1,1,1,1) 
column2:Array (2,2,2,2) 

..... и так далее.Я не могу понять, как это сделать.

Что мне удалось сделать, так это прочитать весь файл и получить все числа в 1 массиве, но только это.

Вот код

var myTextLoader:URLLoader = new URLLoader;
var txtArray:Array;

myTextLoader.load(new URLRequest(inputFile.text));

myTextLoader.addEventListener(Event.COMPLETE,onLoaded);

function onLoaded(e:Event):void
{
    txtArray = e.target.data.split(/\-|\n/g);
}

Ответы [ 3 ]

1 голос
/ 05 декабря 2011

до split \n \r в массив (чтение с циклом)

и то же самое с ... -

цикл в цикле для получения многомерного массива

Имейте в виду, что результатом является «таблица»

, наконец, чтобы получить результат, сделайте это.

variable[file][column]
a[2][3] ----> 4

;)

0 голосов
/ 06 декабря 2011

Спасибо Лланис, который дал мне идею. Это мой последний код. Извините, я не пометил язык, который мне никогда не встречался. Я новичок.

myTextLoader.load(new URLRequest(inputWX.text));

myTextLoader.addEventListener(Event.COMPLETE,onLoaded);

function onLoaded(e:Event):void
{
    txtArray = e.target.data.split(/\-|\n/g);

    var wArray:Array = new Array(txtArray.length/4);
    var xArray:Array = new Array(txtArray.length/4);
    var yArray:Array = new Array(txtArray.length/4);
    var zArray:Array = new Array(txtArray.length/4);

    var a:int = 0;
    var b:int = 0;
    var c:int = 0;
    var d:int = 0;
    var columna:int = 1;

    for(var arrayIndex:int = 0; arrayIndex <= txtArray.length-1;arrayIndex++)
    {
        switch(columna){
            case 1: wArray[a] = txtArray[arrayIndex]; a+=1;
            break;
            case 2: xArray[b] = txtArray[arrayIndex]; b+=1;
            break;
            case 3: yArray[c] = txtArray[arrayIndex]; c+=1;
            break;
            case 4: zArray[d] = txtArray[arrayIndex]; d+=1;
            break;
        }

        if(columna == 4)
            columna = 1;
        else columna++;
    }

}

0 голосов
/ 06 декабря 2011

Попробуйте разделить его на две части, сначала по строке, а затем по элементу:

function onLoaded(e:Event):void
{
    preArray:Array = e.target.data.split(/\n/g);
    txtArray = new Array();
    for(var i:int = 0; i < preArray.length; i++) {
        txtArray.push(preArray[i].split(/\-/g));
    }
}

Это даст вам двумерный массив, к которому вы будете обращаться следующим образом:

textArray[0][0]; // result: 1
textArray[2][3];

и т. Д.

...