Suren97 Ответов: 3

Javascript: как заменить word в textarea


У меня есть текстовая область, два входа и кнопка. В textarea я пишу любое предложение, например "Привет, как дела". В первом вводе я пишу слово, например "вы", а во втором вводе я пишу заменяющее слово, например "они". После нажатия на кнопку Заменить я должен получить примерно такой результат "Привет, как они". Как я могу это сделать?

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

Я уже пробовал, но это неправильно :(

<fieldset>
		<legend>Replace words</legend>
		<textarea id="text3" cols="50" rows="10" placeholder="Type a sentence..."></textarea><br>
		<input id="word1" type="text" placeholder="Word 1">
		<input id="word2" type="text" placeholder="Word 2">
		<button onclick="ReplaceWord()">Replace</button>
	</fieldset>


function ReplaceWord(){
	var a = document.getElementById("text3").value;
	var b = document.getElementById("word1").value;
	var c = document.getElementById("word2").value;
	var x = a.split(" ");
	for(var i = 0; i < x.length; i++){
		if(x.indexOf(b) != -1){
			x = x.replace(b,c);
		}
	}
	document.getElementById("text3").value = x.join(" ");
}

3 Ответов

Рейтинг:
1

Jochen Arndt

Если вы хотите заменить только первый случай выполнения

var newText = a.replace(b, c);
document.getElementById("text3").value = newText;
будет делать свою работу.

Не существует метода по умолчанию со строковым параметром для замены нескольких вхождений. Но версия регулярного выражения может сделать это с помощью глобальной опции:
// Use a RegExp instance here to pass a string known only at runtime.
//var re = new RegExp(b, "g");
// EDIT: To match only whole words use the special character "\b" (word boundary).
var re = new RegExp("\\b" + b + "\\b", "g");
var newText = a.replace(re, c);
document.getElementById("text3").value = newText;

Смотреть также String.prototype.replace() - JavaScript | MDN[^] и Регулярные выражения - JavaScript | MDN[^].


Suren97

но мое условие верно?

Jochen Arndt

Что вы подразумеваете под "условием истинности"?

Что я забыл:
Если вы хотите сопоставить только целые слова, заключите их в специальный символ \b (граница слова).

Рейтинг:
1

ajitjha347

я думаю, что это похоже на

var x = a.split(" ").replace(b,c);

это тоже будет работа.


Suren97

Внутри состояния?

Рейтинг:
0

Member 14904071

Поймите, что английский не является родным языком каждого, поэтому будьте снисходительны к плохой орфографии и грамматике.
Если вопрос плохо сформулирован, то либо попросите разъяснений, проигнорируйте его, либо отредактируйте вопрос и исправьте проблему. Оскорбления не приветствуются.