VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.

Ответить
 • Просмотры: 1
Аватара пользователя
namin78

VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.

Сообщение namin78 »

Желательно js/

Есть файл fb2. В нем есть лишние абзацы. Нужно при запуске скрипта, опросить начальную строку и конечную строку. И после нажатия "ок", удалить все между этих строк, включая эти строки.

Пример есть текст :





Скрытый текст

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

Серж

Читать



Поиск



Копилка



FAQ



Почта



Глава 2

Примерно через час к нам зашел один из подчиненных Синтия и предложил переодеться в вещи достойные приема у Синтия, показав нам традиционные одежды для высшей аристократии из моего прошлого мира. Хоть я был признанным специалистом в своей области, но в связи с моим происхождением меня редко приглашали на приемы высшей аристократии. Если быть честным то только один когда помог одному графу с доставшимися в наследство древними артефактами. У нас в империи действовал закон, согласно которому все древние артефакты подлежат сдаче государству, а оно уже потом решает само что вернуть владельцу, а что оставить себе с минимальной компенсацией. Так вот граф попросил разобраться с артефактами и определить что у него там вообще есть, ведь действуя через официального оценщика артефакты почти сто процентов попали бы государству. И в благодарность за помощь граф заплатил мне пятьсот золотых и пригласил на помолвку своей дочери, хотя мне с моим торговым происхождениям там делать было нечего.



[/spoiler]






При запуске скрипта я ввожу начальную строку"Серж", конечную строку "Глава 2". Жму "ок". И на выходе получаю



Скрытый текст

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



Примерно через час к нам зашел один из подчиненных Синтия и предложил переодеться в вещи достойные приема у Синтия, показав нам традиционные одежды для высшей аристократии из моего прошлого мира. Хоть я был признанным специалистом в своей области, но в связи с моим происхождением меня редко приглашали на приемы высшей аристократии. Если быть честным то только один когда помог одному графу с доставшимися в наследство древними артефактами. У нас в империи действовал закон, согласно которому все древние артефакты подлежат сдаче государству, а оно уже потом решает само что вернуть владельцу, а что оставить себе с минимальной компенсацией. Так вот граф попросил разобраться с артефактами и определить что у него там вообще есть, ведь действуя через официального оценщика артефакты почти сто процентов попали бы государству. И в благодарность за помощь граф заплатил мне пятьсот золотых и пригласил на помолвку своей дочери, хотя мне с моим торговым происхождениям там делать было нечего.



[/spoiler]




Таких кусков текста может быть несколько.
Аватара пользователя
Iska

Re: VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.

Сообщение Iska »

Цитата namin78:



Есть файл fb2.
VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.




Образец файла упакуйте в архив и приложите к сообщению, либо выложите архив на RGhost/Яндекс.Диск. Укажите пример строк:


Цитата namin78:



начальную строку"Серж", конечную строку "Глава 2"
VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.




для выложенного образца. Желательно также, чтобы образец содержал указанное Вами:


Цитата namin78:



Таких кусков текста может быть несколько.
VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.
Вложения
пример.rar
(11.89 КБ) 0 скачиваний
пример.rar
(11.89 КБ) 0 скачиваний
Аватара пользователя
Iska

Re: VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.

Сообщение Iska »

Попробуйте так (WSH/VBScript):

Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

Option Explicit
Dim strSourceFile
Dim strFromString, strToString
Dim objDomDocument
Dim objXMLDOMElement
Dim boolDeletion
strSourceFile = "C:\Мои проекты\0037\пример\пример.fb2"
strFromString = InputBox("From string") ' "Rinat-106 M"
strToString   = InputBox("To string")   ' "С нами: 3 года 2 месяца"
Set objDomDocument = WScript.CreateObject("Microsoft.XMLDOM")
objDomDocument.load(strSourceFile)
boolDeletion = False
For Each objXMLDOMElement In objDomDocument.selectNodes("/FictionBook/body/section/p")
	If Not boolDeletion Then
		If StrComp(objXMLDOMElement.text, strFromString, vbTextCompare) = 0 Then
			objXMLDOMElement.parentNode.removeChild objXMLDOMElement
			boolDeletion = True
		End If
	Else
		objXMLDOMElement.parentNode.removeChild objXMLDOMElement
		If StrComp(objXMLDOMElement.text, strToString, vbTextCompare) = 0 Then
			boolDeletion = False
		End If
	End If
Next
objDomDocument.Save strSourceFile
Set objDomDocument = Nothing
WScript.Quit 0
Аватара пользователя
namin78

Re: VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.

Сообщение namin78 »

Цитата namin78:



чтобы скрипт работал с файлом, который я перетащил на него?
VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.




Примерно так (не проверялось):



Скрытый текст

[spoiler]Код:
[/spoiler]

Код: Выделить всё

Option Explicit
Dim strSourceFile
Dim strFromString, strToString
Dim objXMLDOMElement
Dim boolDeletion
If WScript.Arguments.Count = 1 Then
	strSourceFile = WScript.Arguments.Item(0)
	If WScript.CreateObject("Scripting.FileSystemObject").FileExists(strSourceFile) Then
		strFromString = InputBox("From string") ' "Rinat-106 M"
		strToString   = InputBox("To string")   ' "С нами: 3 года 2 месяца"
		With WScript.CreateObject("Microsoft.XMLDOM")
			.load(strSourceFile)
			boolDeletion = False
			For Each objXMLDOMElement In .selectNodes("/FictionBook/body/section/p")
				If Not boolDeletion Then
					If StrComp(objXMLDOMElement.text, strFromString, vbTextCompare) = 0 Then
						objXMLDOMElement.parentNode.removeChild objXMLDOMElement
						boolDeletion = True
					End If
				Else
					objXMLDOMElement.parentNode.removeChild objXMLDOMElement
					If StrComp(objXMLDOMElement.text, strToString, vbTextCompare) = 0 Then
						boolDeletion = False
					End If
				End If
			Next
			.Save strSourceFile
		End With
	Else
		WScript.Echo "Can't find source file [" & strSourceFile & "]."
		WScript.Quit 2
	End If
Else
	WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ "
	WScript.Quit 1
End If
WScript.Quit 0
Аватара пользователя
namin78

Re: VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.

Сообщение namin78 »

Iska, Вечер добрый, Вы мне недавно помогли(за что спасибо).

Есть еще одна просьба. Тот же fb2 файл, очень многие диалоги, начинаются с маленькой буквы(должны с большой).



Код:

Код: Выделить всё

— и что же? — спросил начальник абордажной команды, здоровенный бугай, с татуировкой на всю лысую голову, с изображением взбешённого осьминога.

— что? А вы заметили, сколько в городе на данный момент ушастых? Кстати, все они моряки, причём военные. Нашего капитана и его помощника, окучивают на предмет покупки кораблей, только цены дают… и требуют обучить их магов для пользования движителей, причём без всякой охраной клятвы.

— кэп запёрся в своей вотчине и никуда носа не кажет. Поговаривают даже стычка у него была с ребятами Мика. — влез в разговор ещё один из «печальных» пиратов.

Надо проверить в начале строки наличие длинного тире, если есть, то проверить какая буква идет через пробел после тире, если строчная, поменять на заглавную, если заглавная ни чего не делать.

Заранее спасибо.
Аватара пользователя
namin78

Re: VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.

Сообщение namin78 »

Цитата namin78:



какая буква идет через пробел после тире
VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.




Там преимущественно неразрывные пробелы.



Примерно так:
0003.7z
.



Оригинал будет сохранён в одноимённый файл с расширением .bak. Если таковой уже существовал — он будет перезаписан без подтверждения.
Вложения
Виват Император.rar
(73.96 КБ) 0 скачиваний
Виват Император.rar
(73.96 КБ) 0 скачиваний
Аватара пользователя
Iska

Re: VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.

Сообщение Iska »

И, похоже, это ещё не конец. Там и тире не все длинные Изображение.



Код:

Код: Выделить всё

- Ты глянь какая громадина в косынке в таверну-то забрела?

…
- но как такое может быть?*— удивлённо взирает на безопастника император.

и т.д.



Добавил уточнение в предыдущий код.
Аватара пользователя
Iska

Re: VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.

Сообщение Iska »

Цитата Iska:



на безопастника
VBS/WSH/JS - [решено] Помогите написать скрипт удаления не нужных абзацев в тексте.




Н-да, в том тексте с грамотностью вообще не всё, мягко говоря, в порядке: споткнувшись на этом пассаже, посмотрел и остальные приведённые здесь строки того текста. Изображение
Вложения
0003.7z
(702 байт) 0 скачиваний
0003.7z
(702 байт) 0 скачиваний
Ответить

Вернуться в «Скриптовые языки администрирования Windows»