|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
|
Замена слова в строке на случайное из списка.
Здравствуйте!
Есть строка "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". Заранее спасибо! |
|
|||||
var text:String = "lorem ipsum dolor sit amet"; var list:Array = ["NGasta!", "Kvata!", "Kvakis"]; text = text.replace(/lorem/g, list[int(Math.random() * list.length)]); |
|
|||||
Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
|
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." заменить все точки на любое слово из списка? (Вместо я использовал , но замена получилась некорректной) |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
|
Знание регулярок - сила! Пора бы мне уже за них взяться, а то позорюсь тут. Спасибо, Wolsh!
P.S. А! Совсем забыл важную деталь! Дело в том, что при замене хотелось бы, чтобы слово "lorem" менялось на случайное слово из списка, и это случайное слово каждый раз было случайным (необязательно разным, но случайным). То есть текст "lorem lorem lorem lorem lorem" должен превратиться в "Kvata! Kvata! NGasta! Kvakis NGasta!", например. Можно как-то подобное реализовать? Хотя, наверное, можно вот так: Последний раз редактировалось gait; 20.04.2012 в 01:29. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Обычно "неповторяющийся рэндом" как раз и делают на массивах. Принцип простой – после того как элемент массива был использован, он удаляется из массива (массив тут естественно временная копия исходного массива). Когда массив заканчивается, делаем новую копию. Также надо сделать проверку на совпадение последнего выпавшего элемента и нового, потому как алгоритм выше гарантирует неповторяемость только на протяжении одного "цикла", а на стыках возможны повторы (из новой полной копии массива может выпасть тот же элемент, который был последним единственным в предыдущем проходе).
Добавлено через 10 минут Другой вариант – когда элемент удаляется из массива, он запоминается в переменной, а когда удаляется следующий элемент, этот сохраненный записывается в массив обратно. И хотя теоретически он может выпасть сразу на следующей итерации, он все-равно будет "отделен" другим элементом (1 0 1). Так же, как и с проверкой на "стыках".
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
|
Хм, а я разве где-то писал про "неповторяющийся рэндом"?
|
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
А как надо понимать
Цитата:
Добавлено через 1 минуту А, понял, сейчас все точки заменяются на одно и то же слово.
__________________
Reality.getBounds(this); |
|
|||||
Регистрация: Mar 2010
Адрес: Russian Federation
Сообщений: 59
|
Прощу прощения, если выразил мысль туманно. Там же дальше приписка в скобках.
Цитата:
Последний раз редактировалось gait; 20.04.2012 в 02:06. |
Часовой пояс GMT +4, время: 20:35. |
|
« Предыдущая тема | Следующая тема » |
Опции темы | |
Опции просмотра | |
|
|