Javascript.RU

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

Замена подстроки в строке
Друзья помогите пожалуйста написать регулярное выражение для замены подстрок в строке. Например есть строка из слов с дефисом разделенные пробелом: "верх-низ лево-право назад-вперед".

Нужно сделать поиск по первому словосочетанию перед дефисом и заменить словосочетание полностью.

Например найти все словосочетание начинающие на "верх-" и заменить его на "верх-право". Строковыми функциями я это реализовал, но получилось громоздко, может есть какой нибудь более элегантный способ?
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются

Последний раз редактировалось simple, 27.02.2016 в 03:03.
Ответить с цитированием
  #2 (permalink)  
Старый 27.02.2016, 09:10
Профессор
Отправить личное сообщение для Dilettante_Pro Посмотреть профиль Найти все сообщения от Dilettante_Pro
 
Регистрация: 27.11.2015
Сообщений: 2,899

simple,
Преобразовать строку в массив при помощи split по пробелам и по элементам менять что хочется, потом снова собрать строку
Ответить с цитированием
  #3 (permalink)  
Старый 27.02.2016, 09:26
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

var str = 'верх-низ лево-право назад-вперед';

alert(str.replace(/(?:\s|^)верх\s*-\s*[а-яё]+/gi, 'верх-право'));
Ответить с цитированием
  #4 (permalink)  
Старый 27.02.2016, 09:30
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

simple,
var str = "верх-низ лево-право назад-вперед";
str = str.replace(/(верх-)\S+/g,"$1право");
alert(str)
Ответить с цитированием
  #5 (permalink)  
Старый 27.02.2016, 12:30
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

Всем большое спасибо за ответы. Вот вариант у Рони мне понравился, а можно его немного изменить что бы искало без дефиса, т.е просто по первому слову и заменяло его? Спасибо.
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Ответить с цитированием
  #6 (permalink)  
Старый 27.02.2016, 12:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

simple,
непонял ... ну уберите -
Ответить с цитированием
  #7 (permalink)  
Старый 27.02.2016, 12:41
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

рони,пробовал, не получается
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются
Ответить с цитированием
  #8 (permalink)  
Старый 27.02.2016, 12:53
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

simple,
пишите код без - и какой должен быть результат
Ответить с цитированием
  #9 (permalink)  
Старый 27.02.2016, 12:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

simple,
var str = "верх-низ лево-право назад-вперед верховье";
str = str.replace(/(^|\s)верх\S+/g,"$1абракадабра");
alert(str)
Ответить с цитированием
  #10 (permalink)  
Старый 27.02.2016, 13:01
Аватар для simple
Профессор
Отправить личное сообщение для simple Посмотреть профиль Найти все сообщения от simple
 
Регистрация: 23.09.2010
Сообщений: 247

рони, например
var str = "верх верх-низ влево-вправо назад-вперед";
str = str.replace(/(?:верх)\S+/g,"верх-вправо");
alert(str)

найти "верх" и заменить его на "верх-вправо". Т.е искомые слова могут быть как с дефисом так и без.

В вашем примере абракадабра затирает верх.
__________________
На начальном этапе события могут казаться случайными, но постепенно проявляется связь, и в конце концов все части целого складываются

Последний раз редактировалось simple, 27.02.2016 в 13:09.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Замена символов в строке jquery, javascript Derty01 Общие вопросы Javascript 7 12.04.2018 20:38
Замена подстроки только 1 раз Telnet Events/DOM/Window 3 23.06.2015 10:29
Замена слова в строке на определенной позиции Hapson Общие вопросы Javascript 3 18.01.2014 05:17
Поиск в строке другой подстроки средствами JS YAN Общие вопросы Javascript 13 23.07.2013 09:41
Найти все подстроки в строке BorisBritva jQuery 2 11.04.2013 22:47