Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.04.2012, 03:16
Новичок на форуме
Отправить личное сообщение для LiveWizard Посмотреть профиль Найти все сообщения от LiveWizard
 
Регистрация: 15.04.2012
Сообщений: 3

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

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


<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>


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

Трудность в том, что в строке заменить нужно часть подходящую к значению элемента массива, на значение элемента другого массива. При этом в массивы нельзя записать инфу - они только для чтения.
Ответить с цитированием
  #2 (permalink)  
Старый 15.04.2012, 03:32
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

<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>
__________________
С моих слов записано верно.
Ответить с цитированием
  #3 (permalink)  
Старый 15.04.2012, 03:34
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

Сообщение от LiveWizard
Трудность в том, что в строке заменить нужно часть подходящую к значению элемента массива, на значение элемента другого массива. При этом в массивы нельзя записать инфу - они только для чтения.
это можно сделать, только если в массивах слова будут такие же, как и в строке, в противном случае есть вероятность замены не того, что требуется
__________________
С моих слов записано верно.
Ответить с цитированием
  #4 (permalink)  
Старый 15.04.2012, 03:43
Новичок на форуме
Отправить личное сообщение для LiveWizard Посмотреть профиль Найти все сообщения от LiveWizard
 
Регистрация: 15.04.2012
Сообщений: 3

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

Это часть скрипта (использует API Яндекс.Спеллера) проверки орфографии, поэтому проблем быть не должно - слова с ошибками, должны замениться на слова без ошибок.
Ответить с цитированием
  #5 (permalink)  
Старый 15.04.2012, 03:49
Аватар для T-sh
Профессор
Отправить личное сообщение для T-sh Посмотреть профиль Найти все сообщения от T-sh
 
Регистрация: 04.12.2009
Сообщений: 579

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

Это часть скрипта (использует 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>


то получится чушь.
__________________
С моих слов записано верно.
Ответить с цитированием
  #6 (permalink)  
Старый 15.04.2012, 04:09
Новичок на форуме
Отправить личное сообщение для LiveWizard Посмотреть профиль Найти все сообщения от LiveWizard
 
Регистрация: 15.04.2012
Сообщений: 3

Сообщение от 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>


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

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

Последний раз редактировалось LiveWizard, 15.04.2012 в 04:25.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск