2017-02-16 4 views
0

Здесь я пытаюсь заменить появление строки и 4 символа после этого пустым.Javascript: Как удалить появление символа из значения?

Для Eg я имею ниже строку:

var a=ssss~ABC*bvbfg~JJJ*ertert~PMU*trert~GFRG*qqqq~HGHGHG 

я получаю значение как bvbfg

Теперь, когда я получаю значение я должен заменить bvbfg~JJJ на пустое значение и строка должна стать

var a=ssss~ABC*ertert~PMU*trert~GFRG*qqqq~hghgh 

Аналогично, если я получаю значение как qqqq, я должен заменить qqqq~HGHGHG на пустое значение

и новое значение должно быть

var a=ssss~ABC*bvbfg~JJJ*ertert~PMU*trert~GFRG 

Я пытался сделать с помощью регулярного выражения:

Что-то, как показано ниже (для ЭГ)

mystring.replace(/bvbfg/g , "newchar"); 

Но результаты я видел не были хорошо. Это немного сложно. Любые указания. Благодарю.

+4

Try [ 'заменить (/ bvbfg ~ [^ *] * \ */г, ' ') '] (https://regex101.com/r/eqbibe/2) –

+0

Я дважды читал ваш вопрос, но я до сих пор не понял –

+0

Вы хотите заменить для обоих случаев за один раз? – RomanPerekhrest

ответ

0

Я новичок в регулярном выражении, это то, что я пробовал и, похоже, работает. /bvbfg~(\w+)[*]?/g

Демо: http://regexr.com/3fagf

Но я хотел бы предложить вам использовать ответ Wiktor Stribiżew в.

+0

Как передать bvbfg в регулярное выражение? –

+0

Вам нужно сделать функцию для этого, проверьте ответ ibrahim mahrir –

1

function remove(str, tok) { 
 
    var regex = new RegExp('\\b' + tok + '~[^*]*\\*?', 'i'); // if you want it to be case sensetive, then remove the 'i' parameter 
 
    return str.replace(regex, '') 
 
      /*.replace(/^\*|\*$/, '')*/; // uncomment this to remove *s from the start and the end 
 
} 
 

 
var a = "ssss~ABC*bvbfg~JJJ*ertert~PMU*trert~GFRG*qqqq~HGHGHG"; 
 

 
console.log(remove(a, "ertert"));

Анализировать:

function parse(str) { 
 
    return str.split('*') 
 
      .reduce(function(res, e) { 
 
       var parts = e.split('~'); 
 
       res[parts[0]] = parts[1]; 
 
       return res; 
 
      }, {}); 
 
} 
 

 
var a = "ssss~ABC*bvbfg~JJJ*ertert~PMU*trert~GFRG*qqqq~HGHGHG"; 
 

 
console.log(parse(a));

+0

Спасибо mate +1: в случае abc, ertert, werer, asdasd. Если я хочу удалить ertert. существует ли какое-либо регулярное выражение, которое может помочь мне получить abc, werer, asdasd. Я отвечу на ваш ответ –

+1

Если 'tok' начинается с символа, отличного от слова,' \ b' приведет к сбою. Надеюсь, это не так. –

+0

@NitheshKumar Вы имеете в виду, как разобрать его в объект (пары ключ-значение)? –

0

Здесь вы идете ... коротко и просто :)

document.getElementById('btn').onclick = function() { 
 
var value = document.getElementById('value').value, 
 
    a = 'ssss~ABC*bvbfg~JJJ*ertert~PMU*trert~GFRG*qqqq~HGHGHG', 
 
    regx = new RegExp('\\*?' + value + '~\\w*', 'g'); 
 
console.log(a.replace(regx, '')); 
 
}
<input id="value" type="text"> 
 
<button id="btn">Submit</button>

0

Сложив все вместе с регулярным выражением Stribiżew в:

function getRegexp(s) { 
 
    return new RegExp(s + '~[^*]*\\*?', 'gi'); 
 
} 
 

 
var str = 'ssss~ABC*bvbfg~JJJ*ertert~PMU*trert~GFRG*qqqq~HGHGHG'; 
 

 
var s = 'bvbfg'; 
 
console.log(str.replace(getRegexp(s), '')); 
 

 
s = 'qqqq'; 
 
console.log(str.replace(getRegexp(s), ''));

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