powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Разделить строку текстового файла на 2 части
32 сообщений из 32, показаны все 2 страниц
Разделить строку текстового файла на 2 части
    #38290291
bombimbom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста как лучше разделить следующий текст на 2 части чтобы потом записать в datagridview на 2 столбца
текст например может иметь несколько пробелов поэтому
эта процедура выдает ошибку, что количество столбцов меньше чем длина массива
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    Dim dt = New DataTable()
            Try
            Dim myReadFile As New StreamReader("C:\test\log\log07.06.2013_1.txt", System.Text.Encoding.GetEncoding(1251))
            Dim dr As DataRow = dt.NewRow        
           Dim sReadLine As String = " "
           dt.Columns.Add("Время")
            dt.Columns.Add("лог запись")
           dr.ItemArray = myReadFile.ReadToEnd.Split(sReadLine)
            dt.Rows.Add(dr)
            myReadFile.Close()
            DataGridView1.DataSource = dt
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try



07.06.2013T11:51:03 ааааа ааааа ааааа ааааа ааааа ааааа ааааа
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38290310
Arm79
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вариантов масса

например, 07.06.2013T11:51:03 - фиксированное количество символов. поэтому два сабстринга, один из которых на длину 07.06.2013T11:51:03, второй - до конца строки

Или, IndexOf, возвращающий первый пробел

Или, Regex
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38290350
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
string text = "07.06.2013T11:51:03 qwerty qwerty qwerty\n07.06.2013T11:51:03 qwerty qwerty qwerty\n07.06.2013T11:51:03 qwerty qwerty qwerty\n";
IEnumerable<Log> data = text
    .Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
    .Select(d =>
    {
        var part = d.Split(" ".ToCharArray(), 2, StringSplitOptions.RemoveEmptyEntries);
        return new Log
        {
            Date = DateTime.ParseExact(part[0], "dd.MM.yyyyTHH:mm:ss", CultureInfo.InvariantCulture),
            Text = part[1],
        };
    });
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38290502
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... один из вариантов
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
    Dim dt = New DataTable()
            Try
            Dim myReadFile As New StreamReader("C:\test\log\log07.06.2013_1.txt", System.Text.Encoding.GetEncoding(1251))
            Dim dr As DataRow = dt.NewRow        
           Dim sReadLine As String = myReadFile.ReadToEnd
           Dim FirstSpace As Integer =  sReadLine.IndexOf(" ")
           dt.Columns.Add("Время")
           dt.Columns.Add("лог запись")
           dr("Время") = sReadLine.Remove(FirstSpace)
           dr("лог запись") = sReadLine.Remove(0, FirstSpace)

            dt.Rows.Add(dr)
            myReadFile.Close()
            DataGridView1.DataSource = dt
        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try



... а у вас файлы из одной строки состоят?
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38290534
bombimbom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
carrotik,
нет, постараюсь подумать как использовать цикл а строчки идут следующим образом

07.06.2013T11:51:03 ааааа ааааа ааааа ааааа ааааа ааааа ааааа

07.06.2013T11:51:02 ааааа ааааа ааааа ааааа ааааа ааааа ааааа

07.06.2013T11:51:03 ааааа ааааа ааааа ааааа ааааа ааааа ааааа
и так далее

по Вашей процедуре пока получается что все в одну строку записывает
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38290545
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bombimbom,

...да чего тут думать, ReadLine надо использовать ..

http://msdn.microsoft.com/en-us/library/3zc0w663.aspx
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38290690
bombimbom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Arm79,

по Вашему предложению

Код: vbnet
1.
2.
  Dim linetime As String = myReadFile.ReadLine.Substring(0, 19)
        Dim linestring As String = myReadFile.ReadLine.IndexOf(" ")



linestring возвращает -1
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38290748
bombimbom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
делаю так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 
        Dim Separ As Char = " "
        Dim dt = New DataTable()
        Dim sr  As New StreamReader("C:\test\log\log07.06.2013_1.txt", System.Text.Encoding.GetEncoding(1251))
        Dim linetime As String = sr.ReadLine.Substring(0, 19)
        Dim linestring As String = sr.ReadLine.IndexOf(" ")
     
        dt.Columns.Add("Время")
        dt.Columns.Add("лог файл")
        Do
            Dim dr As DataRow = dt.NewRow
            dr("Время") = linetime
            dr("лог файл") = linestring
           dt.Rows.Add(dr)
        Loop Until sr.ReadLine Is Nothing
        DataGridView1.DataSource = dt


тут уже и в цикле, но как избавиться от проблемы с -1 постоянно пишет -1, истина где-то рядом :) подскажите еще немножко :)
я волшебное слово знаю :)
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38290786
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bombimbom,

.. у вас, вероятно, строки идут с пропуском, т.е. пустые строки с символом перевода каретки ... Или через строку делайте цикл (т.е. пустышку ReadLine выбрасывайте), либо проверку на If .Contains(" ") или как-то еще ...
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38290791
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
... и потом, IndexOf - это Integer, а не строка ... вы почитайте тщательней ...
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38291152
Ermak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторDim linetime As String = sr.ReadLine.Substring(0, 19)

Это что за билиберда?
Не догадываетесь, что тут происходит?
Вы читаете ВСЮ строку из файла, потом тут же обрезаете ее, а остальное отбрасываете.

Далее
авторDim linestring As String = sr.ReadLine.IndexOf(" ")
Тут вообще бред сивой кобылы.

1. читаем СЛЕДУЮЩУЮ (ЕЩЕ РАЗ, ЧТО БЫ ДОШЛО. СЛЕДУЮЩУЮ) строку из потока.
2. находим позицию первого пробела. Это кстати число
3. и присвоил позицию переменной linestring.

PS. Я бы разделил операциию загрузки текста из внешнего источника и загрузки текста в DataGridView т.е как мин. было бы 2 метода.
Никогда не мешаю все в одну кучу. Так сказать из опыта. От любого "Ерша" башка только болит. :)
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292287
bombimbom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сделал так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
 Dim dt = New DataTable()
        Dim separ As Char = " "
        Dim myReadFile As New StreamReader("C:\test\log\log07.06.2013_1.txt", System.Text.Encoding.GetEncoding(1251))

        Dim line As String = myReadFile.ReadToEnd

        Dim linetime As String = line.Substring(0, 19)
        Dim linestring As String = line.Substring(20, 30)
      
        MessageBox.Show(linestring)
        dt.Columns.Add("Время")
        dt.Columns.Add("лог файл")
        Dim dr As DataRow = dt.NewRow
        dr("Время") = linetime
        dr("лог файл") = linestring
        dt.Rows.Add(dr)

        DataGridView1.DataSource = dt
        myReadFile.Close()
   


читает только 1 строку, помогите сделать цикл... что-то у меня уже ступор...
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292299
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это полный песец...

Автор, я тебе дал решение в самом начале. Не осилил?
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292325
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЭто полный песец...

Автор, я тебе дал решение в самом начале. Не осилил?+1

Какую-то позицию первого пробела предлагают искать.

Парни, обратите внимание на то, что метод String.Split может принимать вторым параметром максимальное число возвращаемых подстрок, и на то, как этим воспользовался МСУ.
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292362
ShSerge
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На правах оффтопа.
Пардон, я не очень в ВБ силён, а там что, так и пишут "C:\test\log\log07.06.2013_1.txt", а не "C:\\test\\log\\log07.06.2013_1.txt" ?
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292367
bombimbom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
МСУ,
я работаю в vb.net
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292372
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeНа правах оффтопа.
Пардон, я не очень в ВБ силён, а там что, так и пишут "C:\test\log\log07.06.2013_1.txt", а не "C:\\test\\log\\log07.06.2013_1.txt" ?Ага, пишут так.
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292373
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShSergeНа правах оффтопа.
Пардон, я не очень в ВБ силён, а там что, так и пишут "C:\test\log\log07.06.2013_1.txt", а не "C:\\test\\log\\log07.06.2013_1.txt" ?

.... да, так и пишем .. :)
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292379
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУЭто полный песец...

Автор, я тебе дал решение в самом начале. Не осилил?

...вы бы тогда сразу рассказали ТС, как в vb.net лямбды писать ...
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292381
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bombimbomМСУ,
я работаю в vb.netВ MSDN примеры и на VB есть.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Module StringSplitModule
    Sub Main()
        Dim dt = New DataTable()

        dt.Columns.Add("Время")
        dt.Columns.Add("Лог записи")

        Try
            Dim fileReader As New System.IO.StreamReader("C:\Temp\example.txt", System.Text.Encoding.GetEncoding(1251))

            Do While fileReader.Peek() >= 0
                Dim line As String = fileReader.ReadLine()
                Dim row As DataRow = dt.NewRow()

                row.ItemArray = line.Split(" ".ToCharArray, 2)

                Console.WriteLine("Время: {0}", row("Время"))
                Console.WriteLine("Лог записи: {0}", row("Лог записи"))
            Loop

            fileReader.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try

        Console.ReadKey()
    End Sub
End Module
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292405
bombimbom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,
Спасибо огромное!!! и Всем спасибо что терпели меня :)
так все получилось ))) урааа!!!
теперь буду думать как bindingsourse сделать ;)

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
  Dim dt = New DataTable()
        dt.Columns.Add("Время")
        dt.Columns.Add("Лог записи")
        Try
            Dim fileReader As New System.IO.StreamReader("C:\test\log\log07.06.2013_1.txt", System.Text.Encoding.GetEncoding(1251))

            Do While fileReader.Peek() >= 0
                Dim line As String = fileReader.ReadLine()
                Dim row As DataRow = dt.NewRow()

                row.ItemArray = line.Split(" ".ToCharArray, 2)
                row("Время") = row("Время")
                row("Лог записи") = row("Лог записи")
                dt.Rows.Add(row)
            Loop
            DataGridView1.DataSource = dt
            fileReader.Close()
        Catch ex As Exception
            MsgBox(ex.Message)
        End Try
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292407
bombimbom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все дело оказалось в этом

Код: vbnet
1.
row.ItemArray = line.Split(" ".ToCharArray, 2)
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292419
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bombimbomskyANA,
Спасибо...Не за что. Могли бы и покороче код написать:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Dim dt = New DataTable()
  
dt.Columns.Add("Время")
dt.Columns.Add("Лог записи")

Try
  Dim fileReader As New System.IO.StreamReader("C:\test\log\log07.06.2013_1.txt", System.Text.Encoding.GetEncoding(1251))

  Do While fileReader.Peek() >= 0
    dt.Rows.Add(fileReader.ReadLine.Split(" ".ToCharArray, 2))
  Loop
    
  fileReader.Close()
Catch ex As Exception
  MsgBox(ex.Message)
End Try

DataGridView1.DataSource = dt
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292423
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bombimbomвсе дело оказалось в этом

Код: vbnet
1.
row.ItemArray = line.Split(" ".ToCharArray, 2)


Не забывайте читать документацию на те методы, что используете, вместо гадания на форуме.
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292440
bombimbom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
skyANA,

читаю, но не всегда получается применить то что написано к тому что нужно
я сначала штудирую интернет, а потом обращаюсь на форум
Спасибо !
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292447
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bombimbom,

Вот небольшой пример.
Внимательно смотрите на код...

проект в 12-й студии, тем не менее можно запросто применить к любой версии...
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292467
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex Kuznetsov, забейте на Substring, пользуйтесь Split. Выше показано как.
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292496
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bombimbomМСУ я работаю в vb.net
И что дальше?

carrotikМСУЭто полный песец...
Автор, я тебе дал решение в самом начале. Не осилил?
...вы бы тогда сразу рассказали ТС, как в vb.net лямбды писать ...
Ну так пусть он спрашивает.
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38292597
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAAlex Kuznetsov, забейте на Substring, пользуйтесь Split. Выше показано как.Да мне оно как-то на... не нужно. Это был небольшой пример того как можно решить задачу. Задача на 10 минут с кофей и форматированием рюшечек...
Просто мучается человек, мучается и книги читать не хочет - сначала в интернетах ищет, потом здесь на форуме спрашивает. А надо-бы "пинка под зад" дать и отправить учиться...
Ну да ладно... более ничего сказать не хочу...
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38293020
bombimbom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex Kuznetsov,

учиться дорого!
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38293230
Alex Kuznetsov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bombimbomAlex Kuznetsov,

учиться дорого!Только тем кому лень !
...
Рейтинг: 0 / 0
Разделить строку текстового файла на 2 части
    #38293496
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex KuznetsovbombimbomAlex Kuznetsov, учиться дорого!Только тем кому лень !
+1
...
Рейтинг: 0 / 0
32 сообщений из 32, показаны все 2 страниц
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Разделить строку текстового файла на 2 части
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]