Suren97 Ответов: 3

Javascript: как заменить несколько пробелов на один


Во входных данных я пишу любое предложение с несколькими пробелами,после нажатия на кнопку удаления пробелов мне нужно заменить эти несколько пробелов на один и показать его в теге h1.

Что я уже пробовал:

Я пробовал, но это не работает.

<input id="bar" type="text" placeholder="Type a sentence...">
		<button onclick="spaceremover()">Space Remover</button>
		<h1 id="result1"></h1>


function spaceremover(){
	var a = document.getElementById("bar").value;
	for(var i = 0; i < a.length;i++){
	a.replace(/\s/g, ' ');	
	}
	document.getElementById("result1").innerHTML = a;
}

3 Ответов

Рейтинг:
20

Jochen Arndt

Ваш regex заменяет только отдельные символы пробела (\s) с одним пробелом. Чтобы сопоставить последовательности из нескольких пробелов, вы должны указать это, добавив a + (совпадение одного или нескольких случаев) или {2,} (сопоставьте два или более случаев).

Также не нужно использовать цикл, когда с помощью глобального параметра регулярное выражение.

Наконец, String.prototype.replace() - JavaScript | MDN[^ функция ] возвращает новую строку, в которой была произведена замена, но не изменяет исходную строку

Так что используйте (непроверенный):

function spaceremover(){
    var a = document.getElementById("bar").value;
    document.getElementById("result1").innerHTML = a.replace(/\s{2,}/g, ' ');
}


Suren97

Большое спасибо :)

Jochen Arndt

Добро пожаловать.

Suren97

У меня тоже есть одна проблема, не могли бы вы мне помочь, пожалуйста?
https://www.codeproject.com/Questions/1252529/Javascript-how-to-replace-word-in-textarea

Jochen Arndt

Сделано.
Мало чем отличается от этого вопроса, кроме использования шаблона поиска, известного только во время выполнения.

Рейтинг:
1

Raju Barigela

var myStr = 'The     quick   brown  fox';
    alert(myStr);  // Output 'The     quick   brown  fox'
    
    var newStr = myStr.replace(/  +/g, ' ');
    alert(newStr);  // Output 'The quick brown fox'

document.getElementById("result1").innerHTML = newStr;


Рейтинг:
0

ajitjha347

Вы можете использовать

.replace(/\d+/, '') 

или
.split('/\d+/').join(' ')


.split('  ').join(' ')

или
str.replace( /\s\s+/g, ' ' )

или

var str = "       Hello World!       ";
   alert(str.trim());

и этот самый используемый в данном случае
myStr.replace(/  +/g, ' ')


это было бы достойно внимания.


Suren97

Это не работает. Я думаю, что проблема в том или ином цикле.