Замена подстроки в строке
Друзья помогите пожалуйста написать регулярное выражение для замены подстрок в строке. Например есть строка из слов с дефисом разделенные пробелом: "верх-низ лево-право назад-вперед".
Нужно сделать поиск по первому словосочетанию перед дефисом и заменить словосочетание полностью. Например найти все словосочетание начинающие на "верх-" и заменить его на "верх-право". Строковыми функциями я это реализовал, но получилось громоздко, может есть какой нибудь более элегантный способ? |
simple,
Преобразовать строку в массив при помощи split по пробелам и по элементам менять что хочется, потом снова собрать строку |
var str = 'верх-низ лево-право назад-вперед'; alert(str.replace(/(?:\s|^)верх\s*-\s*[а-яё]+/gi, 'верх-право')); |
simple,
var str = "верх-низ лево-право назад-вперед"; str = str.replace(/(верх-)\S+/g,"$1право"); alert(str) |
Всем большое спасибо за ответы. Вот вариант у Рони мне понравился, а можно его немного изменить что бы искало без дефиса, т.е просто по первому слову и заменяло его? Спасибо.
|
simple,
непонял ... ну уберите - :-? |
рони,пробовал, не получается :no:
|
simple,
пишите код без - и какой должен быть результат |
simple,
var str = "верх-низ лево-право назад-вперед верховье"; str = str.replace(/(^|\s)верх\S+/g,"$1абракадабра"); alert(str) |
рони, например
var str = "верх верх-низ влево-вправо назад-вперед"; str = str.replace(/(?:верх)\S+/g,"верх-вправо"); alert(str) найти "верх" и заменить его на "верх-вправо". Т.е искомые слова могут быть как с дефисом так и без. В вашем примере абракадабра затирает верх. |
Часовой пояс GMT +3, время: 08:51. |