Как сделать массив фруктов из текстового файла с каждым фруктом, имеет четыре свойства в C # - PullRequest
0 голосов
/ 18 сентября 2018

Итак, вот текстовый файл, например:

Apple, red, crunchy
Orange, orange, juicy
Watermelon, green, juicy

Хорошо, я могу заставить C # прочитать каждую строку и поместить ее в массив.Мне нужно, чтобы C # посмотрел на него и создал массив объектов, называемых фруктами длиной 3 элемента.Поэтому для первого элемента в массиве я хочу иметь доступ к каждой отдельной записи, а не ко всем, как к одной строке.Идея состояла бы в том, что тогда я мог бы отправить каждое свойство в класс для создания объекта.

Итак, предположим, что у меня есть создание FileStream и тому подобное.

Fruit[] fruits = new Fruit[3];

Теперь я хочу взятьтри записи в первой строке и отправить его конструктору для Fruit.

Любая помощь будет принята с благодарностью. Надеюсь, я достаточно ясен.

Ответы [ 3 ]

0 голосов
/ 18 сентября 2018

Вы можете просто использовать Linq для разделения элементов:

IEnumerable<string[]> items = File.ReadAllLines("filename.txt").Select(x=> x.Split(','));
Fruit[] fruits = items.Select(x=> new Fruit{Name = x[0], Color = x[1], Type = x[2]}).ToArray();
0 голосов
/ 18 сентября 2018

Вы должны написать класс Fruit, создать новый файл в вашем проекте под названием Fruit.cs

, тогда это должно сработать:

class Fruit
{
    string fruitName { get; set; }
    string desc1 { get; set; }
    string desc2 { get; set; }
    string desc3 { get; set; }
    string desc4 { get; set; }

    public Fruit(string name,string description1,string description2)
    {
        this.fruitName = name;
        this.desc1 = description1;
        this.desc2 = description1;
    }


}

Я думаю, что должно вас переместитьправильное направление.Закк Диаз прав, хотя, вам придется разбирать текст построчно на эти фруктовые объекты.затем добавьте их в свой массив.если возможно, я бы использовал List<Fruit> вместо массива, но это только я.

это будет выглядеть так:

List<Fruit> fruits = new List<Fruit>();

        Fruit addfruit = new Fruit(firstLineOfParsed(name), secondLineOfParsed(desc1), thirdLineOfParsed(desc2));
        fruits.Add(addfruit);
0 голосов
/ 18 сентября 2018

Этот вопрос недостаточно сфокусирован.Есть несколько вещей, которые вам нужно сделать.

Сначала добавьте ваш текстовый файл в проект (если вы используете Visual Studio, щелкните правой кнопкой мыши файл и выберите «Копировать в выходной каталог». В противном случае поместите его рядом с вашим .exe в папку / bin.

Затем используйте System.IO.ReadLines (исследуйте это), чтобы получить содержимое файла. https://www.dotnetperls.com/file-readlines

Это даст вам массив строк, каждый массив содержит фруктовый элемент со всемиthe properties.

Выполните итерацию по этому массиву и используйте string.Split (',') для анализа этой строки в массив строк с фруктами и свойствами в каждом индексе. https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netframework-4.7.2

Один разу вас есть индексированные свойства, вы можете пройти через них и создать новый Fruit () {Name = string2dArray [i] [0], Prop2 = string2dArray [i] [1], ...} https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/how-to-initialize-objects-by-using-an-object-initializer

Вам нужно время, чтобы понять, как сделать эти шаги, я не думаю, что кто-то здесь может (или должен) сделать это для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...