Чтение пользовательских текстовых данных из текстового файла в c# - PullRequest
0 голосов
/ 23 марта 2020

У меня есть следующие данные в текстовом файле. Мне нужно прочитать Имя экземпляра службы, Имя машины и соответствующий статус для каждого имени приложения. Я кодирую в asp. net консольное приложение в C#. Любая помощь приветствуется. Я действительно поражен.

----- данные файла data.txt ---- Имя приложения: push Имя службы: PushEvent.par Состояние развертывания: Успешное имя экземпляра службы: PushEve_PA Имя машины : machine1 Статус: запущенное имя экземпляра службы: PushEve_PA-1 Имя компьютера: machine2 Статус: имя приложения в режиме ожидания: pull Имя службы: Invoke.par Состояние развертывания: отключено Имя экземпляра службы: Invo_PA Состояние развертывания: отключено Имя компьютера: machine3 Статус: неизвестная служба Имя экземпляра: Invo_PA-1 Состояние развертывания: отключено Имя компьютера: machine4 Статус: неизвестно

Ответы [ 2 ]

0 голосов
/ 24 марта 2020

Попробуйте следующий метод:

    static void Main(string[] args)
    {
        Console.WriteLine("Application Name  Service Instance Name  Machine Name         Status");

        string data = File.ReadAllText(@"Path\Data.txt");
        var appArray = data.Split("Application ",StringSplitOptions.RemoveEmptyEntries);

        foreach (var app in appArray)
        {
            var appName = PullValue(app,"Name");
            var serviceArray = app.Split("Service Instance ", StringSplitOptions.RemoveEmptyEntries);
            var services = serviceArray.Skip(1).ToArray();
            foreach(var item in services)
            {
                var serviceInstanceName = PullValue(item, "Name");
                var machineName = PullValue(item, "Machine Name");
                var status = PullValue(item, "Status");
                Console.WriteLine("    {0}            {1}            {2}            {3}",appName, serviceInstanceName, machineName, status);

            }
        }
    }
    private static string PullValue(string line, string key)
    {
        key = key + ": ";
        int ndx = line.IndexOf(key, 0, StringComparison.InvariantCultureIgnoreCase);
        if (ndx >= 0)
        {
            var i=line.IndexOf(" ");
            int ndx2 = line.IndexOf(" ", ndx+key.Length+1, StringComparison.InvariantCultureIgnoreCase);
            if (ndx2 == -1)
                ndx2 = line.Length - 1;
            return line.Substring(ndx + key.Length, ndx2 - ndx - key.Length).Trim();
        }
        return "";
    }

Результат:

enter image description here

0 голосов
/ 23 марта 2020

В приведенном ниже примере показаны данные из текста. Я делаю только имя и статус. Вы можете использовать код для ссылки на него.

 public static class Program
 {
    static void Main(string[] args)
    {

            // The files used in this example are created in the topic
            // How to: Write to a Text File. You can change the path and
            // file name to substitute text files of your own.

            // Example #1
            // Read the file as one string.
            string text = System.IO.File.ReadAllText(@"PAth\Data.txt");

            // Display the file contents to the console. Variable text is a string.
            System.Console.WriteLine("Contents of WriteText.txt = {0}", text);

            string[] splited;
            string Name=string.Empty;
            string Status=string.Empty;

            splited = text.Split(new string[] { "Name:", "Name:" }, 
                        StringSplitOptions.None);
                       Console.WriteLine(splited[1]);
            Name = splited[1].Replace(System.Environment.NewLine, string.Empty); 

            splited = text.Split(new string[] { "Name:", "Deployment Status:" } 
                       ,StringSplitOptions.None);
                       Console.WriteLine(splited[1]);
            Status = splited[1].Replace(System.Environment.NewLine, string.Empty); 



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