Member 11856456 Ответов: 1

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


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

это то, что у меня есть до сих пор:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

       Dim Files As New OpenFileDialog
       Files.Filter = "text(*.TXT files|*.txt"
       ' Allow the user to select multiple images.
       Files.Multiselect = True
       Files.Title = "Select an image"
       Files.ShowDialog()

       Dim fileCount = Files.FileNames.Length
       Dim text(fileCount - 1) As String

       For i As Integer = 0 To fileCount - 1

           Dim textpath As String = Path.GetFullPath(Files.FileNames(i))
           text(i) = System.IO.File.ReadAllText(textpath)

       Next


       For Each textpath As String In Files.FileNames

           RichTextBox1.Text += Environment.NewLine + String.Join(Environment.NewLine, System.IO.File.ReadAllText(textpath).Split(New Char() {ControlChars.Lf}, StringSplitOptions.RemoveEmptyEntries))

       Next


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

Что я уже пробовал:

Я пробовал использовать
RichTextBox1.Lines = Me.RichTextBox1.Text.Split(New Char() {ControlChars.Lf}, StringSplitOptions.RemoveEmptyEntries)
в каждом операторе for, но он все еще производил сингулярный вывод без каких-либо строк.

1 Ответов

Рейтинг:
6

PIEBALDconsult

Ну, я определенно не стал бы делать это таким образом, но пока это так, как насчет чего-то вроде этого (пожалуйста, извините за C#ishness, это всего лишь код psuedo):

foreach ( string textpath in Files.FileNames )
    RichTextBox1.Text += Environment.NewLine + Environment.NewLine + String.Join (Environment.NewLine, System.IO.File.ReadAllText(textpath).Split(New Char() {ControlChars.Lf}, StringSplitOptions.RemoveEmptyEntries)) ;


Или вот это, с помощью StringBuilder:

StringBuilder sb = new StringBuilder() ;

foreach ( string textpath in Files.FileNames )
  foreach ( string line in System.IO.File.ReadAllLines ( textpath ) )
    if ( line.Length > 0 )
      sb.AppendFormat ( "{0}\r\n\r\n" , line ) ;

sb.Length -= 4 ;
RichTextBox1.Text = sb.ToString() ;


Member 11856456

Когда я импортирую несколько текстовых файлов, он добавляет только одну пустую строку, которая находится в верхней части richtextbox. Я искал что-то, что добавило бы пустую строку в качестве разделителя для каждого импортируемого текстового файла. Если есть лучший способ сделать это, я хотел бы знать его. Я не использовал эту часть или vb.net раньше. Итак, работа со строками и текстовыми файлами-это новая область.

PIEBALDconsult

Обновите вопрос с помощью вашего текущего кода.

Member 11856456

Просто обновил его для вас.

PIEBALDconsult

Хорошо, и вы все еще не получаете пустых строк между файлами?
Может быть, добавить еще одну среду.NewLine + ?

Member 11856456

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

PIEBALDconsult

Как это выглядит сейчас?

Member 11856456

тем не менее, есть ли лучший подход к этой ситуации?

PIEBALDconsult

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

Member 11856456

Хорошая новость заключается в том, что мне удалось заставить работать первый из них, который не был StringBuilder. Однако я попробовал StringBuilder и попробовал несколько способов заставить его работать, но он просто не работал. Тем не менее на мой вопрос был дан ответ. Я ценю вашу помощь. Еще раз спасибо!

PIEBALDconsult

ОК. Хорошие новости.