Что нового

Помогите пожалуйста упорядочить строки в текстовом документе.

Alex118

Новичок
Сообщения
1
Репутация
0
Добрый день!
Я сделал скрипт который вписывает строки в текстовый документ. По порядку-по одноу значению на каждую строку.

Выглядит это так:
-------------------------------------------
1_br

2_br
3_br

4_br
5_br
------------------------------------------
(Есть пустые значения - они тоже прописываются)

Но переодически после исользования функции ( _FileDeleteEmptyLines($sFile) - описание функции ниже) у меня возникает ошибка..... и я получаю данный результат:
------------------------------------------
1_br
2_br3_br
4_br
5_br
------------------------------------------
Я уже устал искать в чем причина данной проблемы

Я прошу помощи помочь придумать функцию которая сканирует все строки в которых повторяется "*_br" и отделяет лишнюю часть текста на новую строку.
Т.е задача такая : если в одной строке есть что-то после "_br" - то часть текста которая за ней переноситься на новую строку и заново проверяется. И если все ок- проверяет строки ниже до конца документа.


Код:
Func _FileDeleteEmptyLines($sFile)
    Local $sFileContent = StringRegExpReplace(FileRead($sFile), "(\r?\n){1,}", "\1")
    Local $hFOpen = FileOpen($sFile, 2 + FileGetEncoding($sFile))
    FileWrite($hFOpen, StringStripWS($sFileContent, 3))
    FileClose($hFOpen)
EndFunc
 

IMStrelcov

CTPEJIbLLOB
Сообщения
259
Репутация
66
Добрый день!
Я сделал скрипт который вписывает строки в текстовый документ. По порядку-по одноу значению на каждую строку.

Выглядит это так:
-------------------------------------------
1_br

2_br
3_br

4_br
5_br
------------------------------------------
(Есть пустые значения - они тоже прописываются)

Но переодически после исользования функции ( _FileDeleteEmptyLines($sFile) - описание функции ниже) у меня возникает ошибка..... и я получаю данный результат:
------------------------------------------
1_br
2_br3_br
4_br
5_br
------------------------------------------
Я уже устал искать в чем причина данной проблемы

Я прошу помощи помочь придумать функцию которая сканирует все строки в которых повторяется "*_br" и отделяет лишнюю часть текста на новую строку.
Т.е задача такая : если в одной строке есть что-то после "_br" - то часть текста которая за ней переноситься на новую строку и заново проверяется. И если все ок- проверяет строки ниже до конца документа.


Код:
Func _FileDeleteEmptyLines($sFile)
    Local $sFileContent = StringRegExpReplace(FileRead($sFile), "(\r?\n){1,}", "\1")
    Local $hFOpen = FileOpen($sFile, 2 + FileGetEncoding($sFile))
    FileWrite($hFOpen, StringStripWS($sFileContent, 3))
    FileClose($hFOpen)
EndFunc
Замени строку:
Код:
Local $sFileContent = StringRegExpReplace(FileRead($sFile), "(\r?\n){1,}", "\1")

на
Код:
Local $sFileContent = StringRegExpReplace(FileRead($sFile), '^\R*|\R*$|(?:(?:\r?\n?)(\R)+)', '$1')

и будут удалятся любые переносы каретки и строк в начале и конце текста, а также повторяющиеся переносы, т.е. все пустые строки.
 
Верх