Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Разделить строку текстового файла на 2 части / 25 сообщений из 32, страница 1 из 2
07.06.2013, 14:25
    #38290291
bombimbom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
Подскажите пожалуйста как лучше разделить следующий текст на 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
07.06.2013, 14:31
    #38290310
Arm79
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
вариантов масса

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

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

Или, Regex
...
Рейтинг: 0 / 0
07.06.2013, 14:44
    #38290350
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
Код: 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
07.06.2013, 15:37
    #38290502
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
... один из вариантов
Код: 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
07.06.2013, 15:49
    #38290534
bombimbom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
carrotik,
нет, постараюсь подумать как использовать цикл а строчки идут следующим образом

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

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

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

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

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

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

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

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



linestring возвращает -1
...
Рейтинг: 0 / 0
07.06.2013, 17:07
    #38290748
bombimbom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
делаю так
Код: 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
07.06.2013, 17:17
    #38290786
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
bombimbom,

.. у вас, вероятно, строки идут с пропуском, т.е. пустые строки с символом перевода каретки ... Или через строку делайте цикл (т.е. пустышку ReadLine выбрасывайте), либо проверку на If .Contains(" ") или как-то еще ...
...
Рейтинг: 0 / 0
07.06.2013, 17:19
    #38290791
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
... и потом, IndexOf - это Integer, а не строка ... вы почитайте тщательней ...
...
Рейтинг: 0 / 0
08.06.2013, 03:08
    #38291152
Ermak
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
автор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
10.06.2013, 12:01
    #38292287
bombimbom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
Сделал так
Код: 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
10.06.2013, 12:08
    #38292299
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
Это полный песец...

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

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

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

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

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

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

...вы бы тогда сразу рассказали ТС, как в vb.net лямбды писать ...
...
Рейтинг: 0 / 0
10.06.2013, 12:50
    #38292381
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
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
10.06.2013, 13:04
    #38292405
bombimbom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
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
10.06.2013, 13:05
    #38292407
bombimbom
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
все дело оказалось в этом

Код: vbnet
1.
row.ItemArray = line.Split(" ".ToCharArray, 2)
...
Рейтинг: 0 / 0
10.06.2013, 13:13
    #38292419
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
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
10.06.2013, 13:15
    #38292423
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Разделить строку текстового файла на 2 части
bombimbomвсе дело оказалось в этом

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


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

читаю, но не всегда получается применить то что написано к тому что нужно
я сначала штудирую интернет, а потом обращаюсь на форум
Спасибо !
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Разделить строку текстового файла на 2 части / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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