Страница: 1 | 2 |
Вопрос: String.Split -метод
Добавлено: 21.08.06 22:47
Автор вопроса: Sergey
Читаю из текстового файла и получаю массив строк:
Dim ged As String() = rd.ReadToEnd().Split(vbNewLine)
rd.Close()
Почему-то в начале каждой строки остается Chr(10) или Chr(13)
Что неверно?
Ответы
Всего ответов: 20
Номер ответа: 1
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #1
Добавлено: 22.08.06 04:27
Разбивай по vbCrLf...
Номер ответа: 2
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #2
Добавлено: 22.08.06 07:00
Увы, ничего не меняет...
Номер ответа: 3
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #3
Добавлено: 22.08.06 13:17
Только так удается получить нужный результат:
Но это сильно влияет на время выполнения парсинга для больших файлов
Номер ответа: 4
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #4
Добавлено: 22.08.06 13:37
Можно регулярными выражениями резать...
У тебя проблема в том, что в файле нестандартные переносы строк, судя по всему.
Нужно точно выяснить, какие они и по этим переносам резать, если они все время меняются, то резать регулярным выражением.
Номер ответа: 5
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #5
Добавлено: 22.08.06 15:14
Нестандартные - это строки разной длины?
Так они в текстовых файлах всегда разные...
Номер ответа: 6
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #6
Добавлено: 23.08.06 04:47
нестандартные символы переноса строк
Номер ответа: 7
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #7
Добавлено: 23.08.06 06:59
Это какие, можно подробнее?
У меня последовательно Chr(13) и Chr(10).
Номер ответа: 8
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #8
Добавлено: 23.08.06 07:38
Если везде chr(13) и chr(10) то режь по Chr(13) + Chr(10), если где-то остаются левые символы, значит где-то нестандартные переносы строк, нужно резать регулярными выражениями, что еще непонятного?
Номер ответа: 9
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #9
Добавлено: 23.08.06 10:05
Brand, ну зачем нервничать?
ВЕЗДЕ строки заканчиваются chr(13) и chr(10). Нестандартные переносы строк отсутствуют. Кодировка ANSI. Попробуйте сделать у себя без регулярного выражения. Интересен результат.
Номер ответа: 10
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #10
Добавлено: 23.08.06 13:57
Я еще не начал нервничать.
У меня есть пароль от базы данных, когда я начну нервничать, ты первый это увидишь
Если у тебя ВЕЗДЕ строки заканчиваются chr(10) и chr(13) то нигде лишних символов показывать не будет.
Как я попробую у себя что-то? Текст твоего файла и код над которым ты работаешь, мне еще не приснился
Номер ответа: 11
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #11
Добавлено: 23.08.06 15:29
У меня последовательность chr(13) и chr(10).
Если не трудно, можно использовать любой имеющийся у вас текстовый файл. Я пробовал на множестве разных файлов. Результат один.
Номер ответа: 12
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #12
Добавлено: 23.08.06 16:06
А регулярное выражение работает без ошибок:
Dim ged As String() = instance.Split(rd.ReadToEnd())
Номер ответа: 13
Автор ответа:
Павел
Администратор
ICQ: 326066673
Вопросов: 368
Ответов: 5968
Web-сайт:
Профиль | | #13
Добавлено: 23.08.06 16:52
Так будет резать по любому разделителю, юудь то CrLf, Cr, Lf или даже
LfCr.
Я вообще String.Split недолюбливаю именно за сложность разбиения по
строкам (ибо он заточен под разбиение по символам)... Обычно вместо
него юзаю старый Split:
Dim strs As String() = Split(text, ControlChars.CrLf)
Хотел еще вчера написать, но лень было открыть MSDN и перепроверить
это...
Номер ответа: 14
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #14
Добавлено: 23.08.06 20:11
Жжош аццки
Номер ответа: 15
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #15
Добавлено: 23.08.06 21:50
Добавляет пустые строки после каждой строки.
А вот это делает все быстро и как положено
Павел, спасибо, навел на решение!
Brand, спасибо за внимание!