![]() |
Замена слова в строке на случайное из списка.
Здравствуйте!
Есть строка "lorem ipsum dolor sit amet". Мне хотелось бы заменить программно "lorem" на случайное слово из списка ["NGasta!", "Kvata!", "Kvakis"]. То есть, чтобы на входе было "lorem ipsum dolor sit amet", на выходе "NGasta! ipsum dolor sit amet" или "Kvata! ipsum dolor sit amet" или "Kvakis ipsum dolor sit amet". Заранее спасибо! |
Код AS3:
Код AS3:
|
expl, спасибо большое! То что нужно!
Только вот я стал немного менять параметры и захотел изменить слово для замены просто на символ и это не привело ни к чему хорошему. Что нужно сделать, чтобы в тексте "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." заменить все точки на любое слово из списка? (Вместо Код AS3:
Код AS3:
|
Код AS3:
|
Знание регулярок - сила! Пора бы мне уже за них взяться, а то позорюсь тут. Спасибо, Wolsh!
P.S. А! Совсем забыл важную деталь! Дело в том, что при замене хотелось бы, чтобы слово "lorem" менялось на случайное слово из списка, и это случайное слово каждый раз было случайным (необязательно разным, но случайным). То есть текст "lorem lorem lorem lorem lorem" должен превратиться в "Kvata! Kvata! NGasta! Kvakis NGasta!", например. Можно как-то подобное реализовать? Хотя, наверное, можно вот так: Код AS3:
|
Обычно "неповторяющийся рэндом" как раз и делают на массивах. Принцип простой – после того как элемент массива был использован, он удаляется из массива (массив тут естественно временная копия исходного массива). Когда массив заканчивается, делаем новую копию. Также надо сделать проверку на совпадение последнего выпавшего элемента и нового, потому как алгоритм выше гарантирует неповторяемость только на протяжении одного "цикла", а на стыках возможны повторы (из новой полной копии массива может выпасть тот же элемент, который был последним единственным в предыдущем проходе).
Добавлено через 10 минут Другой вариант – когда элемент удаляется из массива, он запоминается в переменной, а когда удаляется следующий элемент, этот сохраненный записывается в массив обратно. И хотя теоретически он может выпасть сразу на следующей итерации, он все-равно будет "отделен" другим элементом (1 0 1). Так же, как и с проверкой на "стыках". |
Хм, а я разве где-то писал про "неповторяющийся рэндом"? :)
|
А как надо понимать
Цитата:
Добавлено через 1 минуту А, понял, сейчас все точки заменяются на одно и то же слово. |
Прощу прощения, если выразил мысль туманно. Там же дальше приписка в скобках.
Цитата:
|
| Часовой пояс GMT +4, время: 13:52. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.