Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
5 / 5 / 0
Регистрация: 20.07.2020
Сообщений: 146

Конвертирование *.fb2 в *.txt

25.01.2022, 11:48. Показов 4016. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте.
Я сделал программу для конвертации *.fb2 в *.txt. Но она не всегда корректно работает. Виной, как мне кажется теги.
Делаю:
VB.NET
1
2
3
Dim Txt As String = IO.File.ReadAllText("1.txt", System.Text.Encoding.Default)
        Txt = Txt.Replace("<p>", "") : Txt = Txt.Replace("</p>", "")' и т.д.
         IO.File.WriteAllText("1.txt", Txt, System.Text.Encoding.Default)
Я пробовал создать маску "<" & * & ">", она не работает из-за звезды. Пробовал заменять звезду на точку - тоже не работают.
Подскажите, есть-ли универсальная маска, чтобы удалять (или заменять) все теги? Или менять звезду на что-то другое?
Я пробовал найти универсальную маску, но все они тоже не работают.
Рабатаю Vb.net (2017).
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
25.01.2022, 11:48
Ответы с готовыми решениями:

Как создать конвертер (fb2->txt,txt->fb2)
Здраствуйте. Кто знает где можна достать исходник конвертера(fb2-&gt;txt,txt-&gt;fb2), ну и по возможности других текстовых форматов. И ищё: где...

Конвертер TXT в FB2
срочно понадобился конвертер txt в fb2 - простой батник . Нашёл таки , правда это симбиоз какой-то xsl и bat . сам не автор . как...

Текстовый редактор, чтение doc, fb2, txt
Здравствуйте, в универе дали задание написать текстовый редактор для чтения форматов doc, fb2, txt на языке си или асемблере, как сделать...

30
5 / 5 / 0
Регистрация: 20.07.2020
Сообщений: 146
26.01.2022, 13:31  [ТС]
Студворк — интернет-сервис помощи студентам
Тим70, Спасибо
0
2290 / 1606 / 400
Регистрация: 26.06.2017
Сообщений: 4,772
Записей в блоге: 1
26.01.2022, 15:24
Тим70, буквально пара моментов: 1. как и ожидалось всё содержимое <binary> попадает в итоговый текст. 2. итоговый текст монолит, т.е. читать его просто невозможно (на что, кстати, ТС обращал внимание). Ну остаётся только догадываться как будут выглядеть другие элементы вроде таблиц в формате TXT

Не по теме:

При обработке элементов fb2 как dom можно реализовать запись таблиц в TXT-файл таким образом:
Кол.1| Кол.2
12 | Опа
44 | Ёпа
А если применить расширенную таблицу ASCII, то можно вообще с границами ячеек оформить :-))



Ну и по коду:
Вот это
VB.NET
1
2
3
4
5
6
If OFD.ShowDialog = DialogResult.OK Then
    Pu = OFD.FileName
    C = FileIO.FileSystem.GetName(Pu)
End If
Dim N As Integer = Len(C)
C = Strings.Left(C, N - 4) ' длина расширения файла может быть и более 3-х символов, но с fb2 проканает конечно
Лучше записать так:
VB.NET
1
2
3
4
If OFD.ShowDialog = DialogResult.OK Then
    Pu = OFD.FileName
    C = System.IO.Path.GetFileNameWithoutExtension(Pu)
End If
1
5 / 5 / 0
Регистрация: 20.07.2020
Сообщений: 146
26.01.2022, 16:01  [ТС]
Тим70, Эксплорер мне совсем нравится, лучше я останусь на листбокс. Я планирую конвертацию всех файлов fb2 из папки, а для этого листбокс лучше всего (для меня, по крайней мере).
Кстати, вы предложили универсальную маску
Code
1
2
3
4
5
    Private Function DeleteTextBetween(inpit As String, startTag As String, endTag As String)
        Dim re = New Regex($"({Regex.Escape(startTag)}).*?({Regex.Escape(endTag)})", RegexOptions.Singleline)
        Return re.Replace(inpit, " ")
    End Function
DeleteTextBetween(B, "<", ">")
Вот только в ней никак не могу разобраться. А есть вариант по проще?
0
Любитель
 Аватар для Тим70
1047 / 757 / 161
Регистрация: 27.01.2019
Сообщений: 1,531
26.01.2022, 16:14
Uswer, Так я для уборки этого монолита и сделал обрезку текста с TextBox1 по TextBox3.А за
VB.NET
1
  C = System.IO.Path.GetFileNameWithoutExtension(Pu)
спасибо,не знал.

Добавлено через 5 минут
istomin_an62, Это не моя функция,мне ее предожилиКак удалить фрагмент текста между заданными словами
0
 Аватар для vova2112
148 / 136 / 34
Регистрация: 28.02.2014
Сообщений: 165
26.01.2022, 20:20
Лучший ответ Сообщение было отмечено istomin_an62 как решение

Решение

Цитата Сообщение от istomin_an62 Посмотреть сообщение
Как быть?
Просто надо вычислить кол-во "<body>" и перебором пройтись по ним:

VB.NET
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
29
30
31
32
33
34
35
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim str As IO.StreamWriter = New IO.StreamWriter("D:\Inst\BooksReader\123\000\432021.txt")
        Dim Bodylist As XmlNodeList = fd2.GetElementsByTagName("body")
        Dim BodyCount As Integer = Bodylist.Count
 
        For index = 0 To (BodyCount - 1)
            For Each oi As XmlNode In Bodylist(index).ChildNodes
                If oi.HasChildNodes Then
                    For Each op As XmlNode In oi.ChildNodes
                        If op.Name = "title" OrElse op.Name = "subtitle" Then
                            str.WriteLine(vbNewLine)
                        End If
                        If op.HasChildNodes Then
                            For Each ol As XmlNode In op.ChildNodes
                                If ol.Name = "title" OrElse ol.Name = "subtitle" Then
                                    str.WriteLine(vbNewLine & ol.InnerText & vbNewLine)
                                Else
                                    str.WriteLine(ol.InnerText)
                                End If
                            Next
                        Else
                            str.WriteLine(op.InnerText)
                        End If
                        If op.Name = "title" OrElse op.Name = "subtitle" Then
                            str.WriteLine(vbNewLine)
                        End If
                    Next
                Else
                    str.WriteLine(oi.InnerText)
                End If
                str.WriteLine(vbNewLine)
            Next
        Next
        str.Close()
    End Sub
1
5 / 5 / 0
Регистрация: 20.07.2020
Сообщений: 146
26.01.2022, 21:58  [ТС]
vova2112, Не *.txt, а *.fb2. Ведь именно там содержатся body.
Я сделал то, как вы написали, только относительно fb2. Получил нулевой файл.
Не "body", а "</body><body>", причем на одна под другой, желательно заменить на <section>. Ну и хотя бы сигнализировать о том, где слова "</body><body>" хотя бы раз встречаются, а то обрезка на слове "</body>"
А слова "title" и "subtitle" - зачем они?
0
2290 / 1606 / 400
Регистрация: 26.06.2017
Сообщений: 4,772
Записей в блоге: 1
26.01.2022, 22:39
istomin_an62, обратите внимание где в коде vova2112 указан путь к txt-файлу. Он указан в параметре конструктора StreamWriter, т.е. потока записи, т.е. целевом файле.
1
5 / 5 / 0
Регистрация: 20.07.2020
Сообщений: 146
26.01.2022, 22:57  [ТС]
Uswer, Тупанул. Теперь всё нормально. Спасибо.
0
5 / 5 / 0
Регистрация: 20.07.2020
Сообщений: 146
27.01.2022, 15:44  [ТС]
Вот новая программа.
Всем спасибо!
Отдельное спасибо
vova2112 - за предоставленный код
Uswer - без него я бы ни за что не догадался.
Вложения
Тип файла: rar Конвертирование .fb2 в .txt.rar (289.1 Кб, 37 просмотров)
1
 Аватар для vova2112
148 / 136 / 34
Регистрация: 28.02.2014
Сообщений: 165
27.01.2022, 17:37
istomin_an62
Раз уж ты занялся книгами в формате FB2, и у тебя всплывает множество вопросов то.... Т.К. я сам лет эдак 6 назад тоже с нуля занялся изучением VB.NET и разбором книг в формате FB2 с огромным желанием сделать эдакий пакетный редактор fb2 файлов(групповое переименование, транслитерация, изменение жанра, автора и серии) - надо-ли говорить, что это были не сбывшиеся мечты и грубо говоря я дальше визуального оформления не ушёл. Так что выложу здесь свой ОООчень "грязный", недоделанный да и просто сделанный с дилетантским подходом код, и километрами закомментированного кода проект, в котором даже я уже ничего ни понимаю(Просто желание пропало и очень редко к нему возвращался). Может у тебя возникнет желание в нём разобраться(поковырять его), может быть там ты найдёшь интересующие тебя реализации по коду. Да и просто удалить его рука не подымается.
Вложения
Тип файла: rar Fb2_Mod.rar (5.28 Мб, 77 просмотров)
1
5 / 5 / 0
Регистрация: 20.07.2020
Сообщений: 146
27.01.2022, 18:44  [ТС]
vova2112,
Цитата Сообщение от vova2112 Посмотреть сообщение
надо-ли говорить, что это были не сбывшиеся мечты и грубо говоря я дальше визуального оформления не ушёл.
Ну, у меня мечты почти сбылись.
Для збытмечт мне хватает цвета для расширений (fb2 и zip) и для "+.zip" (просто не знаю, как это реализовать) и приблуды, которая залезает внутрь зипа с целью поиска фрагментов названия файла (там серия и название) (как реализовать знаю, но сейчас обдумываю детали). Я даже специальную придумал (разумеется с советами этого форума) для облегчения работы с FictionBook Editor.
Спасибо за Fb2_Mod.rar, поковыряю.
На всякий случай выкладываю эти 2 программы. Сделаны криво с точки зрения настоящих программистов, но работает.
Вложения
Тип файла: rar Операции с книгами и Клавиатура для FBE.rar (1.57 Мб, 22 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.01.2022, 18:44

Конвертирование файлов DJVU с математическими формулами в WORD(txt)
Есть ли программа, которая может конвертировать DJVU файл с математическими формулами (булевы функции) в WORD, в любой текстовый файл?...

Конвертирование avi-видео в n-мерный массив и последующее сохранение массива в txt файл
Помогите сделать алгоритм который считывает видео(avi) и сохраняет его в n-мерный массив, выводит массив в ТХТ. а также обратную развёртку...

Переименовать все файлы lab01.txt, Inf_lab02.txt … в каталоге К в lab01_Inf.txt, lab02_Inf.txt,
Пожалуйста, помогите разобраться как работать с переменной в цикле. Задание: В указанном каталоге необходимо переименовать все файлы ...

В папке К2 создайте файл t3.txt, в который перепишите вначале текст из файла t1.txt, а затем из t2.txt
Программным путем: 1. В папке С:\temp создайте папки К1 и К2. 2. В папке К1: a) создайте файл t1.txt, в который запишите следующий...

В папке К2 создайте файл t3.txt, в который перепишите вначале текст из файла t1.txt, а затем из t2.txt
В папке К2 создайте файл t3.txt, в который перепишите вначале текст из файла t1.txt, а затем из t2.txt


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
31
Ответ Создать тему
Новые блоги и статьи
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров В текущей версии модели успешно реализован ключевой механизм. . .
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям Реализованные компоненты: Механизм закисления почвы через протонную помпу Конкуренция между типами микориз pH как триггер сукцессии C/ P соотношение. . .
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы ## О чём эта статья В процессе построения ОДУ-модели (система дифференциальных. . .
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет) Содержание проекта Симуляция вековой (50 лет) экологической сукцессии в почве леса Основные участники: АМ-гриб, ЭКМ-гриб,. . .
сукцессия 23. Более физиологичная физиология, более экологичная экология, более диффурные диффуры.
anaschu 12.07.2026
Что реально нашли и починили за эти 5 часов Правило Линдемана (КПД конверсии сахара в тело, kEff) — раньше 100% полученного углерода шло прямо в биомассу гриба; теперь только kEff=0. 5 (после. . .
сукцессия 22. От артефактов к физиологии: калибровка агентной модели грибной сукцессии для воспроизведения сезонной динамики и pH-плато
anaschu 11.07.2026
Аннотация В данной работе представлена калибровка агентной модели динамики грибных сообществ (fungal-succession), направленная на устранение нефизичных артефактов (коллапс биомассы, мгновенное. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru