Что нового

[Данные, строки] Как заменить знаки в строке

Atall

Новичок
Сообщения
27
Репутация
0
Доброго времени суток!

Господа прошу помощи. Совсем запутался. Не понимаю как написать шаблон.

есть файл с большим количеством тегов со значениями внутри типа:

<numb>12-34-56789-123</numb>

нужно заменить все "-" на ":"

заранее благодарю!
 

madmasles

Модератор
Глобальный модератор
Сообщения
7 790
Репутация
2 319
Atall
Код:
$sText = '<numb>12-34-56789-123</numb>'
$sText = StringReplace($sText, '-', ':')
MsgBox(0, '', $sText)
Или надо заменить только внутри тегов?
 
Автор
A

Atall

Новичок
Сообщения
27
Репутация
0
надо заменить внутри тегов и через функцию StringRegReplace

забыл уточнить что номера внутри тегов не известны
 
Автор
A

Atall

Новичок
Сообщения
27
Репутация
0
StringRegExpReplace :'(
 

axlwor

Скриптер
Сообщения
657
Репутация
147
зачем? Это медленно и неудобно
 
Автор
A

Atall

Новичок
Сообщения
27
Репутация
0
а не медленно это как?
 

asdf8

Скриптер
Сообщения
564
Репутация
152
Код:
$sText = '<numb>12-34-56789-123</numb>'
$sText = StringRegExpReplace($sText, '<numb>(\d+)-(\d+)-(\d+)-(\d+)</numb>', '<numb>\1:\2:\3:\4:</numb>')
MsgBox(0, '', $sText)


Не настолько уж это медленно
 
Автор
A

Atall

Новичок
Сообщения
27
Репутация
0
Все работает :ok:

Спасибо за быстрый ответ.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 472
Репутация
2 401
Можно ещё так:

Код:
$sText = '<numb>12-34-56789-123</numb>'
$sText = StringRegExpReplace($sText, '(<numb>)?-?(\d+)-(</numb>|\d)', '\1\2:\3')
MsgBox(0, '', $sText)
 

asdf8

Скриптер
Сообщения
564
Репутация
152
[?]
Цитата сказал(а):
Так будет заменять в любом месте, даже там где ненадо

Код:
$sText = '<любой тег>12-34-56789-123-123</любой тег>'
$sText = StringRegExpReplace($sText, '(<numb>)?-?(\d+)-(</numb>|\d)', '\1\2:\3')
MsgBox(0, '', $sText)


Можно было бы попробовать так:

Код:
$sText = StringRegExpReplace($sText, '(?<=<numb>(?:\d+[-:])*)(\d+)-(?=(?:\d+-?)*</numb>)', '\1:')


но, в автоите это не срабатывает
 
Верх