Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.10.2010, 19:34
Новичок на форуме
Отправить личное сообщение для botan-limon Посмотреть профиль Найти все сообщения от botan-limon
 
Регистрация: 16.04.2010
Сообщений: 4

replace массива
Друзья, подскажите как на javascript реализовать аналог следущего php-кода:

str_replace( 
   array( 'а', 'б', 'в' ),
   array( 'a', 'b', 'v' ),
   $str
);
Ответить с цитированием
  #2 (permalink)  
Старый 06.10.2010, 00:46
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Можно так:
var replace = /абв/;
var subject = "абв";
alert(subject.replace(replace, "abv"))


А можно и так:
function str_replace (search, replace, subject ) {
    if(!(replace instanceof Array)){
        replace=new Array(replace);
        if(search instanceof Array){
            while(search.length>replace.length){
                replace[replace.length]=replace[0];
            }
        }
    }
    if(!(search instanceof Array))search=new Array(search);
    while(search.length>replace.length){
        replace[replace.length]='';
    }
    if(subject instanceof Array){
        for(k in subject){
            subject[k]=str_replace(search,replace,subject[k]);
        }
        return subject;
    }
    for(var k=0; k<search.length; k++){
        var i = subject.indexOf(search[k]);
        while(i>-1){
            subject = subject.replace(search[k], replace[k]);
            i = subject.indexOf(search[k],i);
        }
    }
    return subject;
}

alert(str_replace('абв ', 'абв', 'abv'));

Последний раз редактировалось monolithed, 06.10.2010 в 00:58.
Ответить с цитированием
  #3 (permalink)  
Старый 06.10.2010, 11:19
Профессор
Отправить личное сообщение для with-love-from-siberia Посмотреть профиль Найти все сообщения от with-love-from-siberia
 
Регистрация: 14.12.2009
Сообщений: 155

Или, например, так. Но для чего все это?
function str_replace(search, replace, string)
{
	// 1. все должно быть массивами
	search = [].concat(search);
	replace = [].concat(replace);

	// 2. выровнять массивы
	var len = replace.length - search.length;

	var p_last = search[search.length - 1];

	// 2.1. если массив строк поиска короче
	for (var i = 0; i < len; i++) {
		search.push(p_last);
	}

	// 2.2. если массив строк замены короче
	for (var i = 0; i < -len; i++) {
		replace.push('');
	}

	// 3. непосредственная замена
	var result = string;
	for (var i = 0; i < search.length; i++) {
		result = result.split(search[i]).join(replace[i]);
	}
	return result;
};

var x = 'abc aaa defxyz';
var y = str_replace(
	['a', 'b', 'c'],
	['x', 'y', 'z'], 
	x);

alert([x, y]);

Последний раз редактировалось with-love-from-siberia, 06.10.2010 в 11:29.
Ответить с цитированием
  #4 (permalink)  
Старый 06.10.2010, 17:11
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

http://javascript.ru/php/str_replace
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить название массива? Andrej_2 Общие вопросы Javascript 2 30.06.2010 21:07
Помогите разобраться с повторением при генерации массива (Javascript) JsLoveR Javascript под браузер 4 16.12.2009 15:26
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53
вставка элементов массива в текстовую форму по клику olezyk Общие вопросы Javascript 3 21.03.2009 22:01