@lexstile

Проверка на повторяющийся символ и замена на другой?

Как проверить есть ли в строке повторяющийся следующий символ?
И, если есть, как его заменить на любой другой?
Например есть выражения: abc11d или addf1d4
Нужно получить: abc1*d или ad*f1d4
* - заменяется на произвольный из указанной строки по шаблону(a-z, A-Z, 0-9...).
Если кто обладает информацией и временем, подскажите, пожалуйста.
  • Вопрос задан
  • 3774 просмотра
Решения вопроса 3
Stalker_RED
@Stalker_RED
// замена повторяющихся символов
string.replace(/(.)\1{1,}/gu, '*')

// замена повторяющихся символов, но первый символ сохраняем
string.replace(/(.)\1{1,}/gu, '$1*')

// сохраняем первый, и каждый следующий заменяем
str.replace(/(.)\1{1,}/gu, (a,b)=>b+Array(a.length).join('*'))


Демки:
https://jsfiddle.net/8y6r78k6/
https://jsfiddle.net/8y6r78k6/2/
https://jsfiddle.net/8y6r78k6/3/

Подробности по регулярке: https://regex101.com/r/d1akEg/1
Подробнее о replace: javascript.ru/string/replace
Ответ написан
Shutik
@Shutik
Погромист халявщик
clearString = str => {               
  const trash = str.match(/(.)\1{1,}/g)
  for(let o in trash) {   
    str = str.replace(trash[o], trash[o].substr(0,1)+'*')
  }           
  return str;
}
console.log(clearString('aabc11d'))

https://jsfiddle.net/xf60opqw/
Ответ написан
lxsmkv
@lxsmkv
Test automation engineer
как-то так:
<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
var str = "HELLO WORLD";
document.getElementById("demo").innerHTML = str;
result = ""
for(i=0; i<str.length;i++){
if (str.charAt(i) == str.charAt(i+1)){
	result+='*';
	
}else{
result+=str.charAt(i);
}
document.getElementById("demo").innerHTML = result;
}
</script>
</body>
</html>


прим.: строки в js неизменяемы, поэтому мы строим новую.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы