Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замена в строке - значение элемента массива на значение элемента др. массива (https://javascript.ru/forum/misc/27500-zamena-v-stroke-znachenie-ehlementa-massiva-na-znachenie-ehlementa-dr-massiva.html)

LiveWizard 15.04.2012 03:16

Замена в строке - значение элемента массива на значение элемента др. массива
 
Поздравляю с Пасхой! :victory: :dance:

Ну, а теперь задача, требующая вашей помощи:


<script type="text/javascript">
var arr1 = ["пылесос", "курица"];
var arr2 = ["канализационный люк", "Камаз"];

var news = "Новость: на ул. Пирогова пылесос засосал курицу живьём";

news=news.replace(/arr1[0]/img,arr2[0]);
news=news.replace(/arr1[1]/img,arr2[1]);

</script>


Т.е. нужно произвести замену в строке так, чтобы "Новость: на ул. Пирогова пылесос засосал курицу живьём", преобразовалось в "Новость: на ул. Пирогова канализационный люк засосал Камаз живьём".

Трудность в том, что в строке заменить нужно часть подходящую к значению элемента массива, на значение элемента другого массива. При этом в массивы нельзя записать инфу - они только для чтения.

T-sh 15.04.2012 03:32

<script type="text/javascript">
var arr1 = ["пылесос", "курицу"];
var arr2 = ["канализационный люк", "Камаз"];
 
var news = "Новость: на ул. Пирогова пылесос засосал курицу живьём";
 
news=news.replace(arr1[0],arr2[0]);
news=news.replace(arr1[1],arr2[1]);

alert(news);
</script>

T-sh 15.04.2012 03:34

Цитата:

Сообщение от LiveWizard
Трудность в том, что в строке заменить нужно часть подходящую к значению элемента массива, на значение элемента другого массива. При этом в массивы нельзя записать инфу - они только для чтения.

это можно сделать, только если в массивах слова будут такие же, как и в строке, в противном случае есть вероятность замены не того, что требуется :)

LiveWizard 15.04.2012 03:43

Цитата:

Сообщение от T-sh
это можно сделать, только если в массивах слова будут такие же, как и в строке, в противном случае есть вероятность замены не того, что требуется

Гениальный и простой код ;) Как я не додумался...

Это часть скрипта (использует API Яндекс.Спеллера) проверки орфографии, поэтому проблем быть не должно - слова с ошибками, должны замениться на слова без ошибок.

T-sh 15.04.2012 03:49

Цитата:

Сообщение от LiveWizard (Сообщение 169146)
Гениальный и простой код ;) Как я не додумался...

Это часть скрипта (использует API Яндекс.Спеллера) проверки орфографии, поэтому проблем быть не должно - слова с ошибками, должны замениться на слова без ошибок.

вот только.. если будет так:

<script type="text/javascript">
var arr1 = ["подвал", "бес"];
var arr2 = ["чердак", "ангел"];
 
var news = "Новость: на ул. Пирогова к бесстыжему беспризорнику подвалил бес и утащил его в подвал";
 
news=news.replace(arr1[0],arr2[0]);
news=news.replace(arr1[1],arr2[1]);

alert(news);
</script>


то получится чушь.

LiveWizard 15.04.2012 04:09

Цитата:

Сообщение от T-sh
получится чушь

Да, как я понял - меняет любое первое вхождение, даже части слов.

Ввод в код пробелов устраняет подобное:
<script type="text/javascript">
var arr1 = ["подвал", "бес"];
var arr2 = ["чердак", "ангел"];
 
var news = "Новость: на ул. Пирогова к бесстыжему беспризорнику подвалил бес и утащил его в подвал";
 
news=news.replace(' '+arr1[0]+' ',' '+arr2[0]+' ');
news=news.replace(' '+arr1[1]+' ',' '+arr2[1]+' ');

alert(news);
</script>


Ещё раз спасибо за помощь!

--------------------------------
Хотя по всей видимости придётся действовать по другому. Эх...


Часовой пояс GMT +3, время: 23:21.