2015-07-15 3 views
0

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

Допустим, у меня есть следующая строка:

это тест строки с большим количеством string words здесь другая строка string string здесь string.

Мне нужно заменить первый «строку» до «anotherString» после первого «здесь», поэтому выход будет:

это тест строка много строковых слов здесь еще anotherString строка там строка здесь строка.

Спасибо всем за помощь!

+1

'replace' будет делать это – Tushar

+0

@Tushar по крайней мере, если задано startIndex на основе позиции« здесь » –

ответ

5

Вам не нужно добавлять модификатор g, заменяя только первое появление.

str.replace(/\b(here\b.*?)\bstring\b/, "$1anotherString"); 

DEMO

+1

Это выглядит не только после' здесь' – fejese

+0

отредактировано ......... –

0

Если вы ищете что-то, которая принимает в предложении и заменяет первое вхождение «строка» после того, как «здесь» (на примере в вашем случае),

  1. Возможно, вы должны посмотреть на split() и посмотреть, как использовать его в жадном виде, ссылаясь на что-то вроде this question. Теперь используйте вторую половину разделительной строки

  2. Затем используйте replace(), чтобы найти строку и изменить ее на «anotherString». По умолчанию эта функция жадная, поэтому будет заменено только ваше первое появление.

  3. Соедините деталь перед «здесь» в исходной строке «здесь» и новую строку для второй половины оригинальной строки, и это даст вам то, что вы ищете.

Рабочая вилка here.

inpStr = "this is a string test with a lot of string words here another string string there string here string." 

firstHalf = inpStr.split(/here(.+)?/)[0] 
secondHalf = inpStr.split(/here(.+)?/)[1] 
secondHalf = secondHalf.replace("string","anotherString") 

resStr = firstHalf+"here"+secondHalf 
console.log(resStr) 

Надеюсь, это поможет.

Смежные вопросы