powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Разделить строку текстового файла на 2 части
25 сообщений из 32, страница 1 из 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
25 сообщений из 32, страница 1 из 2
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Разделить строку текстового файла на 2 части
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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