Выделить рандомные слова в тексте <b></b>

Dailes

Client
Регистрация
27.05.2013
Сообщения
193
Благодарностей
76
Баллы
28
Добрый день, интересует сабж.
1 из вариантов заменить рандомный пробел на " <b>"а рандомный+1 на "</b " но можно попасть так, что рандомный номер пробела будет за диапазоном. Тогда как вариант спарсить все пробелы в список, посчитать их количество (операции над списком - получить количество строк), и потом уже брать рандомное число между 0 и количеством строк-1, но согласитесь, это как лечить горло у проктолога. Есть варианты более адекватные? Может каким-то сниппетом?
 

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
651
Баллы
93
Проще всего сделать через JavaScript напимер так:
JavaScript:
var str = "Тестовая строка где будем заменять пробелы";
var arr = str.split(" ");
arr.forEach(function(elem, index, array){
    var doReplace =  Math.round(Math.random()); // Если 1 делаем замену, 0 нет
    if (doReplace) array[index] = "<b>"+elem+"</b>";
})
var result = arr.join(" ");
return result;
В результате получаем такие варианты:
Код:
"Тестовая <b>строка</b> где <b>будем</b> заменять <b>пробелы</b>"
"Тестовая строка где будем <b>заменять</b> <b>пробелы</b>"
 

Dailes

Client
Регистрация
27.05.2013
Сообщения
193
Благодарностей
76
Баллы
28

Dailes

Client
Регистрация
27.05.2013
Сообщения
193
Благодарностей
76
Баллы
28
А я вот совсем дуб в яве, мне выдаёт ошибку в строке 8 - return за пределами функции.
Что я неправильно делаю?
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 708
Баллы
113
В каколм экшене юзаете?
 

Dailes

Client
Регистрация
27.05.2013
Сообщения
193
Благодарностей
76
Баллы
28
Свой код - JavaScript а так же в Тестер Javascript
И ещё вопрос пока вы тут - как заменить пробел на " <b>"? у меня при замене " " на " <b>" почему-то разбиваются слова на куски, как будто он вообще любое слово наугад берёт.
 

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
651
Баллы
93
Поставьте выполнение в браузере, или уберите return при локальном исполнении.

Покажите как вы делаете замену.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 708
Баллы
113

Dailes

Client
Регистрация
27.05.2013
Сообщения
193
Благодарностей
76
Баллы
28

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
651
Баллы
93
Поставьте галочку на текст вместо регекспа
 

Dailes

Client
Регистрация
27.05.2013
Сообщения
193
Благодарностей
76
Баллы
28
Действительно, из-за флажка не работало. Но теперь проблема в том, что сниппет заменяет половину слов, а мне нужно из 100 слов 5-6 максимум. Поэтому вариант с заменой текста предпочтительней гораздо.
А вот если сделать как указано выше - то получается, что оно дробит текст и делает с ним черти что
 

Dailes

Client
Регистрация
27.05.2013
Сообщения
193
Благодарностей
76
Баллы
28
Собственно почему замена " " на " <b> превращает текст в мессиво? ле > > гендарная, устро йстве вот так оно насилует текст :(
 

Dailes

Client
Регистрация
27.05.2013
Сообщения
193
Благодарностей
76
Баллы
28
И ещё! В мейкере правильно расставляет автозамену, а в постере печально.
 

Dailes

Client
Регистрация
27.05.2013
Сообщения
193
Благодарностей
76
Баллы
28
Как-то быстро пропадает кнопка редактировать в своём сообщении.
Хоть убей, но в мейкере всё ок, в постере текст подвергается насилию.
Вот кусок шаблона, может так кто-то скажет, что я делаю не так?

https://yadi.sk/d/eCV6ZfwkdC9Hp

Собственно только что я понял причину ошибки. При переоткрытии шаблона в мейкере в экшене замены удаляются пробелы из "что менять". Почему?
 

Adigen

Client
Регистрация
28.07.2014
Сообщения
825
Благодарностей
651
Баллы
93
Попробуйте вместо пробела использовать {-String.Space-}
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)