Удалить одинаковые соседние буквы из строки (js)
Необходимо создать функцию, которая будет принимать строку и удалить повторяющиеся соседние буквы. Например:
xxxYy == xxY
xXxxyyy == xxyy
Как удалить все повторяющиеся - понятно.
Но как удалить именно по одной соседней?
Ответы (2 шт):
Можно предыдущую букву хранить в переменной и сравнивать с текущей, если равны, то текущую удаляем, а переменную, где хранилась предыдущая очищаем ( что бы удалять именно по одной )
function test(string) {
let prevChar = null;
let result = '';
for(let i = 0; i < string.length; i++) {
const currentChar = string[i].toLowerCase();
if (prevChar === currentChar) {
prevChar = null
} else {
result += currentChar;
prevChar = currentChar;
}
}
document.getElementById('result').innerText = result;
}
<input id="input">
<button onclick="test(document.getElementById('input').value)">Test</button>
<br /><br />
Результат: <br />
<span id="result"><span>
console.log( bubu('xxxYy') ); // xxY
console.log( bubu('xXxxyyy') ) // xxyy
function bubu(str) {
return str.replace(/(.)\1/gi, "$1");
}
/(.)\1/gi — . любой символ (кроме переноса строки), \1 ссылка на то, что совпало внутри первых скобок (т.е. получается требование двойного совпадения чего-либо подряд). i — insensitive, игнорировать case. $1 — уже в строке-замене, ссылка на совпадение внутри скобок.
/(.)\1+/gi а такое выражение (+ одно или много совпадений подряд), будет удалять все соседние повторки.