Что нового

Замена различных символов различными группами в StringRegExpReplace

vovsla

Осваивающий
Сообщения
607
Репутация
36
Есть вот такой код
Код:
$Num=Random(1, 3, 1)
MsgBox(0, $Num, StringReplace(StringReplace(StringReplace($Num, '1', 'Один'), '2', 'Два'), '3', 'Три'))

Что-то не пойму как с помощью StringRegExpReplace реализовать это одной командой, если это вообще возможно
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Vovsla
Заметить цифру на соответствующее буквенное обозначение можно и так
Код:
Global $ar[10] = ["Ноль","Один","Два","Три","Четыре","Пять","Шесть","Семь","Восемь","Девять"]
$Num = Random(0, 9, 1)
MsgBox(0, $Num, $ar[$Num])

А если у вас цель - различные символы различными группами, то не хватает конкретики - какие символы какими группами.
 
Автор
V

vovsla

Осваивающий
Сообщения
607
Репутация
36
В данном конкретном случае нужно именно заменить цифру на слово, но хотелось бы увидеть решение с помощью StringRegExpReplace чтобы использовать его в аналогичных ситуациях.
 

---Zak---

Скриптер
Сообщения
455
Репутация
120
Через StringRegExpReplace не умею такое делать...

Я бы сделал так (идея взята у InnI):
Код:
Global $ar[10] = ["Ноль","Один","Два","Три","Четыре","Пять","Шесть","Семь","Восемь","Девять"]

$str = 'пример 1. Условие: 1 + 2. Решение: 3'

For $i = 0 To 9
	$str = StringReplace($str, String($i), $ar[$i])
Next

MsgBox(0, '', $str)
 

erlik

Продвинутый
Сообщения
317
Репутация
84
Код:
не пойму как с помощью StringRegExpReplace реализовать это одной командой, если это вообще возможно

Возможно. Но это - изврат. Использование массивов замены - самый распространенный способ для таких случаев.
А вот пример изврата :smile:
Код:
$iNum=Random(0,9,1)
MsgBox(0, $iNum, StringRegExpReplace('нольодиндватричетырепятьшестьсемьвосемьдевять','(ноль)(один)(два)(три)(четыре)(пять)(шесть)(семь)(восемь)(девять)','\' & $iNum+1))
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
_NumberNumToName, е?

Vovsla
StringRegExpReplace не имеет в параметре замены под-вариантов замены, а значит заменить выборочно не получится.
Ну и ознакомиться что есть "цикл".
 
Верх