jack dselva Ответов: 2

Как разобрать данные из строки в c#.net


ПРИВЕТ,
У МЕНЯ ЕСТЬ ТЕКСТ В ТАКОЙ СТРОКЕ..

Trade ID:                ABC
Trade Date:              27-JUL-2017
Trade Time:              Thu Jul 27 2017 08:33:57 GMT
Trade Type:              SPOTTER
Currency Pair:           INR
Customer User:           VIKAS

Allocation:-
Account:            LOCAL
                                         SELL:               INR 500
                                         BUY:                INR 200
                                         Value Date:         31-JUL-2017
                                         All In Rate:        1.5
                                         Spot Rate:          1.5

                                    Allocation:-
                                         Account:            OVERSEASE
                                         SELL:               INR 100
                                         BUY:                INR 50
                                         Value Date:         31-JUL-2017
                                         All In Rate:        1.2
                                         Spot Rate:          1.2



И Я ХОЧУ ПОКАЗАТЬ ДАННЫЕ В МОЕМ ДАННОМ ФОРМИАТЕ..
Trade ID	Trade Date		Trade Time						Trade Type	Currency Pair	Customer User
--------------------------------------------------------------------------------------------------
ABC 		27-JUL-2017		Thu Jul 27 2017 08:33:57 GMT	SPOTTER		INR				VIKAS




Account			SELL		BUY			Value Date		All In Rate		Spot Rate
--------------------------------------------------------------------------------------------------
LOCAL			INR 500		INR 200		31-JUL-2017		1.5				1.5
OVERSEASE		INR 100		INR 50		31-JUL-2017		1.2				1.2



ПОЖАЛУЙСТА, ПОМОГИТЕ МНЕ, КАК РАЗОБРАТЬ ДАННЫЕ ИЗ ТЕКСТА НА ЯЗЫКЕ СИ#

Что я уже пробовал:

string Word;
            Console.WriteLine("Enter the word!..");
            Word = Console.ReadLine();   // Read the Input string from User at Run Time  
            var Value = Word.Split(' ');  // Split the string using 'Space' and stored it an var variable  
            Dictionary<string, int> RepeatedWordCount = new Dictionary<string, int>();
            for (int i = 0; i < Value.Length; i++) //loop the splited string  
            {
                if (RepeatedWordCount.ContainsKey(Value[i])) // Check if word already exist in dictionary update the count  
                {
                    int value = RepeatedWordCount[Value[i]];
                    RepeatedWordCount[Value[i]] = value + 1;
                }
                else
                {
                    RepeatedWordCount.Add(Value[i], 1);  // if a string is repeated and not added in dictionary , here we are adding   
                }
            }
            Console.WriteLine();
            Console.WriteLine("------------------------------------");
            Console.WriteLine("Repeated words and counts");
            foreach (KeyValuePair<string, int> kvp in RepeatedWordCount)
            {
                Console.WriteLine(kvp.Key + " Counts are " + kvp.Value);  // Print the Repeated word and its count  
            }

Richard Deeming

C#-это язык с учетом регистра, поэтому первое, что вам нужно сделать, это купить новую клавиатуру, где CAPS LOCK ключ не застрял.

Или так, или учись печатать, не крича на нас!

jack dselva

Просто П*** Выкл.....

Richard Deeming

Ух ты - тебе потребовалось 16 месяцев, чтобы придумать такое оскорбительное сообщение?

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

jack dselva

сначала посмотрите свой комментарий.. как глупый ребенок.. я думаю, что вы должны поступить в любую школу, прежде чем предлагать меня ..
хорошего дня...
да благословит Вас Господь

Richard Deeming

Говорит ребенок, который закатывает истерику из-за того, что кто-то посмел мягко упрекнуть его в несоблюдении элементарного "сетевого этикета". 🤦‍♂️

Все заглавные буквы - Википедия[^]
"По этой причине этикет обычно не поощряет использование всех заглавных букв при размещении сообщений в интернете. В то время как все заглавные буквы можно использовать в качестве альтернативы "жирному шрифту" для одного слова или фразы, чтобы выразить акцент, повторное использование всех заглавных букв можно считать "кричащим" или раздражающим. Такой плохой сетевой этикет привел к ряду случаев увольнения сотрудников именно по этой причине."

Перенесите свои оскорбления в другое место. Здесь это не приветствуется.

2 Ответов

Рейтинг:
7

Karthik_Mahalingam

пробовать

string[] lines = File.ReadAllLines(@"D:\TextFile1.txt");
Dictionary<string, string> dictTrade = new Dictionary<string, string>();
List<Dictionary<string, string>> lstDictAllocations = new List<Dictionary<string, string>>();
int i = 0;
foreach (string line in lines)
{

    string _line = line.Trim();
    if (_line.Length == 0)
        break;
    i++;
    string[] splitter = _line.Split(':');
    string key = splitter[0];
    string value = splitter.Length == 2 ? splitter[1] : string.Join(":", splitter.Skip(1));
    dictTrade.Add(key.Trim(), value.Trim());
}


var linesAlloc = string.Join("\n", lines.Skip(i)).Split(new string[] { "Allocation:-" }, StringSplitOptions.RemoveEmptyEntries);
foreach (string line in linesAlloc)
{
    string _line = line.Trim();
    if (_line.Length != 0)
    {
        Dictionary<string, string> dictAllocation = new Dictionary<string, string>();
        var innerLines = _line.Split('\n');
        foreach (string inner in innerLines)
        {

            string[] splitter = inner.Split(':');
            string key = splitter[0];
            string value = splitter.Length == 2 ? splitter[1] : string.Join(":", splitter.Skip(1));
            dictAllocation.Add(key.Trim(), value.Trim());

        }
        lstDictAllocations.Add(dictAllocation);
    }

}

Примечание: позаботьтесь о форматировании в таблицу и записи в текстовый файл.


jack dselva

спасибо, Картик.

это работает для меня

Karthik_Mahalingam

круто, добро пожаловать

Рейтинг:
0

CPallini

Похоже, вы используете неправильный разделитель, а именно ' ' (пусто) для разделения строки в тексте. Вы должны использовать ':' (двоеточие).