Удалите «невидимые» управляющие символы в VB.Net - PullRequest
3 голосов
/ 10 июня 2011

Я сейчас читаю в текстовом файле в VB.Net используя

Dim fileReader As String
fileReader = My.Computer.FileSystem.ReadAllText(file)

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

Однако, когда я пытаюсь разбить fileReader на массив разных строк, разрыв строки, похоже, остается там, даже если я использую Split(ControlChars.Cr) или Split(ControlChars.NewLine). Он успешно разделит его на отдельные строки, но когда я отобразлю его, он «протолкнет» текст вниз по строке, как будто разрыв строки все еще там ...

Есть ли у кого-нибудь идеи о том, что происходит и как я могу удалить эти "невидимые" контрольные символы.

Текстовый файл:

Test1
Test2
Test3
Test4

FileReader:

Test1
Test2
Test3
Test4

строк () распечатка

Test1

Test2

Test3

Test4

Ответы [ 4 ]

4 голосов
/ 10 июня 2011

Используйте trim() в каждой строке, это удалит посторонние пробелы.

2 голосов
/ 10 июня 2011

Класс System.IO.File имеет метод ReadAllLines, который фактически вернет вам массив строк, по одной на строку.

Если этот метод тоже не работает, я бы точно выяснил, какие байты вызывают у вас проблемы.В окне просмотра вы можете сделать System.Text.Encoding.ASCII.GetBytes (sampleLine) и точно изучить, с чем вы работаете.

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

1 голос
/ 10 июня 2011

Как уже упоминалось, используйте метод Readalllines, чтобы разделить его автоматически.

Проблема, с которой вы сталкиваетесь, заключается в том, что файлы ASCII на ПК обычно разделяются символом возврата каретки, и новая строка, разделяющаяся только на одну, оставляет другую. Вы можете разделить и обрезать, как упомянуто, или использовать другое разделение, которое разделяется на строки вместо символов.

dim s () as string = Split (fileReader, vbCrLf)

Trim также удалит пробелы из данных, в зависимости от вашей ситуации, которая может быть проблемой для вас.

0 голосов
/ 21 мая 2013

Недавно столкнулся с подобной проблемой.Trim () не работает, потому что дополнительные строки уже есть после выполнения разделения (или использования File.ReadAllLines).Вот что сработало для меня:

    Dim allText As String = System.IO.File.ReadAllText(filePath)
    allText = allText.Replace(Chr(13), "")
    Dim lines As String() = allText.Split(vbLf)

Chr (13) - это символ Control-M, который приводит к дополнительным строкам с использованием Split () или File.ReadAllLines.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...