Что нового

Редактирование знаков в строке

BORIS09087

Новичок
Сообщения
20
Репутация
0
Добрый день. Имеется файл text.txt такого вида -

1|хлам|35|3095
2|табуретка|деревянная|сосновая|21|1560
3|саквояж|9|900
4|стакан|стеклянный|9|780
5|кружка|9|745

нужно - оставить в каждой строке первый знак "|", предпоследний и последний знак "|",
остальные заменить пробелами и привести в такой вид -

1|хлам|35|3095
2|табуретка деревянная сосновая|21|1560
3|саквояж|9|900
4|стакан стеклянный|9|780
5|кружка|9|745

Код:
$Replace = StringReplace($Read, '|', ' ')


меняет все знаки в строке, а мне нужно избирательно. Спасибо.
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
$file='1|хлам|35|3095'& @CRLF
$file&='2|табуретка|деревянная|сосновая|21|1560'& @CRLF
$file&='3|саквояж|9|900'& @CRLF
$file&='4|стакан|стеклянный|9|780'& @CRLF
$file&='5|кружка|9|745'& @CRLF
$str=StringRegExp($file,'(?m)^([^\|]+\|)(.*?)(\|[^\|]+\|[^\|]+)$',3)
$zz=''
For $i = 0 To UBound($str)-1 Step 3
	$zz&=$str[$i]&StringReplace($str[$i+1],'|',' ')&$str[$i+2]
Next
MsgBox(32,'',$zz)
 
Автор
B

BORIS09087

Новичок
Сообщения
20
Репутация
0
Спасибо. Но это как бы демо версия. Дело в том, что слова в ТХТ файле могут быть произвольные. И может я немного
не правильно объяснил суть. Нужно считать файл text.txt, сделать замены не конкретного текста, а произвольного и сохранить его.
Количество строк тоже произвольное. то есть суть - заменить пробелами все знаки "|" кроме первого и двух последних
во всех строках.
 

sngr

AutoIT Гуру
Сообщения
1,011
Репутация
409
Код:
$file=FileRead('....')
$str=StringRegExp($file,'(?m)^([^\|]+\|)(.*?)(\|[^\|]+\|[^\|]+)$',3)
$zz=''
For $i = 0 To UBound($str)-1 Step 3
	$zz&=$str[$i]&StringReplace($str[$i+1],'|',' ')&$str[$i+2]
Next
FileWrite(@DesktopDir&'\123',$zz)
 
Автор
B

BORIS09087

Новичок
Сообщения
20
Репутация
0
Большое спасибо! Именно то, что надо!
 

Norm

Продвинутый
Сообщения
291
Репутация
76
Если я правильно понял, то нужно удалить только те | которые стоят только между словами (не числами).
Если так, то проще и быстрее будет так сделать.
Код:
FileWrite(@DesktopDir &"\222.txt", StringRegExpReplace(FileRead(@DesktopDir &"\111.txt"), "(\D)\|(\D)", "$1 $2"))
 
Последнее редактирование:
Верх