Что нового

Поиск-Замена текста в .txt

MadMax

Новичок
Сообщения
3
Репутация
0
Добрый день!
Не могу выполнить следующую задачу:
1. Есть файл test.txt
2. Ищем в нем строчку textOld1 меняем на textNew1
3. Ищем в нем строчку textOld2 меняем на textNew2
4. Сохраняем
Вот с пунктом 4 у меня затык. FileWrite("file","text") может добавить в конец файла строчку.А как сохранить сделанные изменения ничего не добавляя?
 

beve

Осваивающий
Сообщения
104
Репутация
31
MadMax [?]
А как сохранить сделанные изменения ничего не добавляя?
Перед FileWrite нужно открыть файл с помощью
Код:
FileOpen ( "filename" [, mode ] )
с параметром mode - 2 (Режим записи (перезаписать предыдущее содержание))
 
Автор
M

MadMax

Новичок
Сообщения
3
Репутация
0
Так не получается :(
Fileopen ('File',mode)-если ставим mode 2, то удаляется имеющееся содержание. А мне надо оставить.
textold="Маша сидела дома и ела кашу"
textnew="Глаша сидела дома и ела варенье"
Т.е. меняем "Маша" на "Глашу" + "кашу" на "варенье"
Поменять могу, а сохранить оба изменения нет :(
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Например в директории скрипта файл test.txt
Содержание:
Вася пил чай
Маша сидела дома и ела кашу
Петя смотрел телевизор

Надо исправить 2-ю строку на Глаша сидела дома и ела варенье
Тогда коротко, без проверок:
Код:
#include <File.au3>
$File = @ScriptDir&"\test.txt"
_FileWriteToLine($File, 2, "Глаша сидела дома и ела варенье", 1)
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
219
Вроде как-то так:

Код:
$sPath = 'text.txt'
$sTextOld1 = 'Маша'
$sTextOld2 = 'каша'
$sTextNew1 = 'Глаша'
$sTextNew2 = 'Варенье'

$hFile = FileOpen($sPath, 0)
$sText = FileRead($hFile)
FileClose($hFile)

$sText = StringReplace($sText, $sTextOld1, $sTextNew1)
$sText = StringReplace($sText, $sTextOld2, $sTextNew2)

$hFile = FileOpen($sPath, 2)
$sText = FileWrite($hFile, $sText)
FileClose($hFile)
 
Автор
M

MadMax

Новичок
Сообщения
3
Репутация
0
Бинго! Работает! Спасибо большое! :smile:
 

Bingo888

Новичок
Сообщения
36
Репутация
0
Ребят а можно както выравнивать текст, шрифт прописовать?? Если длинное предложение?
 
Сообщения
95
Репутация
-1
Доброе время суток. Нужно найти слово Title и заменить все строку. Допустим Title="пример" на Title="слово". Ну или просто заменить слово в кавычках
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Код:
$s = 'Title="пример"'
$w = 'слово'
$n = StringRegExpReplace($s, 'Title=".*?"', 'Title="' & $w & '"')
ConsoleWrite($n & @CRLF)
 
Верх