Показать сообщение отдельно
  #34 (permalink)  
Старый 11.11.2014, 22:23
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от 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, ["Лимон", "", "ы"], ["Яблок", "о", "и"]) );

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