Как проанализировать структурированный файл в c# с ArrayList? - PullRequest
0 голосов
/ 09 апреля 2020

У меня есть такой текстовый файл. enter image description here

Я преобразую его в структурированный формат, как показано ниже.

public static ArrayList ConllToStructured(string filepath)
    {
        ArrayList structuredfile = new ArrayList();
        string currentline;
        int currentsentence = 0;
        //Read conll file and Convert it to a structured Array list
        //First column is sentence number and other 12 columns is conll fileds

        using (StreamReader sr = new StreamReader(filepath, Encoding.UTF8))
        {
            while ((currentline = sr.ReadLine()) != "#end document")
            {
                if (currentline.Contains("#begin document")) continue;
                if (string.IsNullOrEmpty(currentline))
                {
                    currentsentence += 1;
                    continue;
                }

                //parse each line with whitespace and save in array
                var words = currentline.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                //Save sentence number and word array into a temp array list
                List<string> templine = new List<string>();
                templine.Add(currentsentence.ToString());
                foreach (var columns in words)
                {
                    templine.Add(columns);
                }


                structuredfile.Add(templine);
            }
        }
        return structuredfile;
    }

Но когда я хочу получить доступ к этому структурированному файлу, я могу получить доступ только к каждая строка, но я не могу получить доступ к каждому столбцу в строках. Я добавляю массивы строк в ArrayList для дальнейшего доступа.

1 Ответ

1 голос
/ 09 апреля 2020

Я понял из того, что вы спрашиваете в своем вопросе, как из возвращенного ArrayList вы можете получить данный столбец для данной строки.

Я думаю, что будет лучшим вариантом вернуться из этого метода. List<List<string>>. Потом, когда вы захотите получить доступ к указанному столбцу c в указанной строке c. Вы можете просто сделать

var structuredFile = ConllToStructured(filepath);
var columnString = structuredFile[rowIndex][colIndex];

Но если по какой-то причине вам нужно, чтобы оно было ArrayList, вы должны знать, что ArrayList всегда от объектов. Поэтому, когда вы получаете доступ к элементу из него, вам будет возвращен объект, который вам нужно привести к List<string>, чтобы вы сделали что-то вроде этого:

var columnString = (structuredFile[rowIndex] as List<string>)[colIndex];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...