Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Замена слова посредством Java-script (https://javascript.ru/forum/misc/2946-zamena-slova-posredstvom-java-script.html)

bioz00 26.07.2010 19:34

Дримвывер цс4 выдает ошибку в первой строке, если стереть первые три строки, ощибка появляется в десятой, где var b = {
я в jawa 0.01, поэтому сорри если туплю

bios 04.05.2011 19:47

function replaceHtml(el, html) {
	var oldEl = typeof el === "string" ? document.getElementById(el) : el;
	/*@cc_on 
		oldEl.innerHTML = html;
		return oldEl;
	@*/
	var newEl = oldEl.cloneNode(false);
	newEl.innerHTML = html;
	oldEl.parentNode.replaceChild(newEl, oldEl);
	return newEl;
};

HekracoB 11.11.2014 20:18

Доброго времени суток! Данный код
window.onload=function(){
    document.body.innerHTML=document.body.innerHTML.replace(/Лимон/g,'Яблоко');
}

отлично подходит для моей задачи, но есть одно "НО". Если в тексте встречается "Лимоны", то в итоге я получаю "Яблокоы". Подскажите, как сделать, чтобы код искал строго указанное слово? Ну а чтобы заменить "Лимоны" на "Яблоки", то, я так понимаю, нужно тиражировать код?

Sweet 11.11.2014 22:23

Цитата:

Сообщение от HekracoB
нужно тиражировать код

Нет, конечно. Вот, вникай:
function replace(string, source, replacer) {
	var x = source.slice(1).filter(notEmptyString);
	var ending = "(" + x.join("|") + ")";

	if (x.length == 1) ending += "?";

	var regExp = new RegExp(source[0] + ending, "g");
	
	return string.replace(regExp, handler);

	function handler(match, x) {
		return replacer[0] + replacer[source.indexOf(x || "")];
	}

	function notEmptyString(x) {
		return x;
	}
}

var test = "test Лимон test Лимоны test";
alert( replace(test, ["Лимон", "", "ы"], ["Яблок", "о", "и"]) );

Конечно, можно (и нужно) более элегантно и читаемо сделать, но мне лень - это сходу написано.


Часовой пояс GMT +3, время: 09:56.