C# разделение на разделение табуляции - PullRequest
0 голосов
/ 16 июня 2020

Как изменить разделение пробелов на разделение табуляцией.

Потому что [LD Port 02 CSTID F7SC67: Sorts Complete. ] имеет много пробелов.

Так что я не могу разделить через Split!

List<string> add_list = new List<string>();
List<string> ok_list = new List<string>();
IEnumerable<String> lines = File.ReadLines("C:\\Users\\USER\\Downloads\\1231231231.log");

foreach (string line in lines)
{
    add_list.Add(line);
}

foreach (string row in add_list)
{
    var data = row.Split(' ');
    Console.WriteLine(data);
}

Edit (by @chase): OP не хочет разделять только пробелами - это вот почему их код неправильный. Их окончательный результат должен быть таким, как указано в What I want: - где каждый элемент отделяется запятой, и каждый элемент четко отличается. Вход для достижения этого результата упоминается в Data:

1 Ответ

0 голосов
/ 16 июня 2020

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

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;


namespace ConsoleApplication4
{
    class Program
    {
        const string FILENAME = @"c:\temp\test.txt";
         static void Main(string[] args)
        {
            List<List<string>> data = GetFixedWidth(FILENAME);
        }
         static List<List<string>> GetFixedWidth(string filename)
         {
             int[] startPosition = { 0, 6, 15, 24 }; 
             StreamReader reader = new StreamReader(filename);
             string line = "";
             int length = 0;
             List<List<string>> data = new List<List<string>>();
             while ((line = reader.ReadLine()) != null)
             {
                 line = line.Trim();
                 if(line.Length > 0)
                 {
                     List<string> rowList = new List<string>();
                     data.Add(rowList);
                     for (int i = 0; i < startPosition.Length; i++)
                     {
                         if (line.Length > startPosition[i])
                         {
                             if (i == startPosition.Length - 1)
                             {
                                 string lastColumn = line.Substring(startPosition[i]);
                                 if (lastColumn.Contains(":"))
                                 {
                                     string[] splitData = line.Substring(startPosition[i]).Split(new char[] { ':' });
                                     foreach (string split in splitData)
                                     {
                                         rowList.Add(split.Trim());
                                     }
                                 }
                                 else
                                 {
                                     rowList.Add(lastColumn);
                                 }
                             }
                             else
                             {
                                 length = startPosition[i + 1] - startPosition[i];
                                 rowList.Add(line.Substring(startPosition[i], length).Trim());
                             }
                         }
                     }
                 }
             }

             return data;
         }
    }


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