Что нового

Как изменить конец всех строк на определенное значение?

Vini

Новичок
Сообщения
27
Репутация
0
Всем привет!
Подскажите, пожалуйста, как реализовать следующую задачу:
Имеется текстовый файл вида:

Строка1:...
Строка2:...
Строка3:a1;b1;c1;...y1;z1;
....
СтрокаN:aN;bN;cN;...yN;zN;

строки с третьей по N-ную представляют собой набор чисел, разделенных символом ;, количество строк всегда разное. Так вот необходимо все числа z (т.е. последние числа каждой строки) заменить на какое-то одинаковое значение. При этом первые две строки не трогать.
Если это поможет, то N=12

Спасибо!
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [Данные, строки] Замена текстка в строках

Vini,
Дайте пример файла.
 
Автор
V

Vini

Новичок
Сообщения
27
Репутация
0
Re: [Данные, строки] Замена текстка в строках

[box title=TitleBox]1
13
1;21.01.13;06:59:54;55;1;9223;3;;0;0;0;30;
1;21.01.13;07:14:37;11;1;9223;3;4292;1;1.50;1.000;15;[/box]
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: [Данные, строки] Замена текстка в строках

Vini,
Попробуйте так.
Код:
$sText = '1' & @CRLF & _
		'13' & @CRLF & _
		'1;21.01.13;06:59:54;55;1;9223;3;;0;0;0;30;' & @CRLF & _
		'1;21.01.13;07:14:37;11;1;9223;3;4292;1;1.50;1.000;15;' & @CRLF & _
		'1;21.01.13;07:14:37;11;1;9223;3;4292;1;1.50;1.001;16;' & @CRLF & _
		'1;21.01.13;07:14:37;11;1;9223;3;4292;1;1.50;1.002;17;' & @CRLF & _
		'1;21.01.13;07:14:37;11;1;9223;3;4292;1;1.50;1.003;18;' & @CRLF & _
		'1;21.01.13;07:14:37;11;1;9223;3;4292;1;1.50;1.004;19;' & @CRLF & _
		'1;21.01.13;07:14:37;11;1;9223;3;4292;1;1.50;1.005;20;'

$sEnd = ''
$sReplace = 25
If StringRight($sText, 2) <> @CRLF Then $sEnd = @CRLF
$sText &= $sEnd
$sNewText = StringRegExpReplace($sText, '(?s)(.+?;)\d+(;\r\n).*?', '${1}' & $sReplace & '$2')
$iCount = @extended / 2
If $sEnd Then $sNewText = StringTrimRight($sNewText, 2)
ConsoleWrite('Кол-во замен :' & $iCount & @LF)
ConsoleWrite('Новый текст: ' & @LF)
ConsoleWrite($sNewText & @LF)
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Re: [Данные, строки] Замена текстка в строках

или так
Код:
#include <File.au3>
$CountLines = _FileCountLines('1.txt')
For $i = 3 To $CountLines
	$string = FileReadLine('1.txt',$i)
	$count_lines = StringLen($string)
	$st_r = StringRight($string,3)
	$new_string = StringReplace($string,$st_r,'312;')
	_FileWriteToLine('1.txt',$i,$new_string,1)
Next

меняет последние три символа в строке на одинаковое значение
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Re: [Данные, строки] Замена текстка в строках

Вариант :
Код:
$sText = "1"  & @CRLF & _ 
"13"  & @CRLF & _ 
"1;21.01.13;06:59:54;55;1;9223;3;;0;0;0;30;"  & @CRLF & _ 
"1;21.01.13;07:14:37;11;1;9223;3;4292;1;1.50;1.000;15;"  & @CRLF & _ 
""  & @CRLF & _ 
""  & @CRLF & _ 
""  & @CRLF & _ 
""
$iReplace=1000
$sPatern = "(.+;)\d*(;)"
$sResult = StringRegExpReplace( $sText, $sPatern,  '${1}' & $iReplace & '${2}' )
MsgBox(4096, ' Test Result', $sResult)
 

sngr

AutoIT Гуру
Сообщения
1,010
Репутация
408
Re: [Данные, строки] Замена текстка в строках

Код:
$zam=53
$str='1'& @CRLF & _
'13'& @CRLF & _
'1;21.01.13;06:59:54;55;1;9223;3;;0;0;0;30;'& @CRLF & _
'1;21.01.13;07:14:37;11;1;9223;3;4292;1;1.50;1.000;15;'& @CRLF
MsgBox(32,'',StringRegExpReplace($str,'(\d+)(?=;\r\n)',$zam))
 

gregaz

AutoIT Гуру
Сообщения
1,166
Репутация
299
Re: [Данные, строки] Замена текстка в строках

А если предположить возможность присутствия пустого значения (";;") , то лучше :
(хотя не должно быть )
Код:
$sText = "1"  & @CRLF & _ 
"13"  & @CRLF & _ 
"1;21.01.13;06:59:54;55;1;9223;3;;0;0;0;30;"  & @CRLF & _ 
"1;21.01.13;07:14:37;11;1;9223;3;4292;1;1.50;1.000;15;"  & @CRLF & _ 
";;"
$iReplace=1000
;$sPatern = "(.+;)\d*(;)" ; если вариант ";;" невозможен
$sPatern = "(.*;)\d*(;)" ; Иначе :
$sResult = StringRegExpReplace( $sText, $sPatern,  '${1}' & $iReplace & '${2}' )
MsgBox(4096, ' Test Result', $sResult)



Добавлено:
Сообщение автоматически объединено:

sngr

А если последняя строка без @CRLF ? Придется
Код:
;MsgBox(32,'',StringRegExpReplace($str,'(\d+)(?=;\r\n)',$zam))
MsgBox(32,'',StringRegExpReplace($str & @CRLF ,'(\d+)(?=;\r\n)',$zam))
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Re: [Данные, строки] Замена текстка в строках

Vini
Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"[Данные, строки] Замена текстка в строках" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Администратор.
 
Автор
V

Vini

Новичок
Сообщения
27
Репутация
0
joiner
у меня неизвестно какое количество символов будет в последнем числе. Но спасибо за помощь!
Всем спасибо за помощь!
 
Верх