Friday, October 22, 2010

Задачка

Есть строка, соотв. такому р.е. "([a-z]+)(\*+)".
Нужно получить в результате строку
(length($2) / 2) x '*' . $1 . (length($2) / 2) x '*' (. '*' если кол-во '*' нечётно).
Пример:
"example***" -> "*example**"
"example****" -> "**example**"

Элегантное решение с помощью ре:

$example =~ s/([a-z]+)(\**)\2/$2$1$2/;
Можно и с помощью строковых функций,
но если вам не особо важна производительность -
это, наверное, лучший вариант.

No comments:

Post a Comment