PDA

Просмотр полной версии : text replace


DIGIT
02.12.2003, 21:21
как с помощъю ActionScript заменить буквы в тексте, например в РНР есть функция str_replace();

есть-ли наподобе такой функции во Flash?

mishinaelle
02.12.2003, 21:25
нету
используй сочетание функций substr и indexOf

DIGIT
02.12.2003, 21:57
хм... разве indexOf(); заменяет символы?

а есть пример как это делается?

Ravescape
02.12.2003, 22:43
String.prototype.searchReplace=function(find,replace) {
var result = this.split(find);
return result.join(replace);
}

mishinaelle
03.12.2003, 12:47
кстати варинат от Ravescape очень хорош :)

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

хотя, опять же повторюсь: способ от Ravescape мне теперь более симпатичен ;)

ccwds
08.08.2004, 18:28
А можно ли продолжить этот пример от Ravescape?

ОK. String.prototype.searchReplace=function(find,replace) {
var result = this.split(find);
return result.join(replace);
}

mytext = "Не только мона, но и нуна".
Вот хоцца все "на" заменить на "жно".

Нашел даже более навороченный код -
String.prototype.searchreplace=function(finder,replace) {
var daString=this
var counter=0;
while (counter<daString.length) {
var startPos = daString.indexOf(finder, counter);
if (startPos == -1) {
break;
} else {
var before=daString.substr(0,startPos)
var after=daString.substr(startPos+finder.length,daString.length)
daString=before+replace+after
var counter=before.length+replace.length

}
}
return daString;
}

Ну и как его юзать-то?

ccwds
08.08.2004, 18:45
Сорри, опять брякнул, не подумав. Нельзя ли увеличить время возможности редактирования своего сообщения хотя бы до часа? :) Но пример, который я нарыл, может пригодиться кому-то.

etc
08.08.2004, 20:19
Ну я обычно пользуюсь такой вещью:


String.prototype.replace = function (i1,i2) {
return this.split(i1).join(i2);
}

Либо такой:

String.prototype.replace = function (i1,i2) {
this = this.split(i1).join(i2);
}

Nox Noctis
09.08.2004, 17:15
Оригинал написал(а) ETC
Либо такой:

String.prototype.replace = function (i1,i2) {
this = this.split(i1).join(i2);
} мысль хорошая, только это не работает, извините :)) нельзя this переписать изнутри метода.

etc
09.08.2004, 22:12
Да? А у меня работает! Пользуюсь Flash 7.2 и всё гут!

etc
09.08.2004, 22:15
Не, пардон, не работает :( Это у меня с Array подобная вещь работала... сорри...

Nox Noctis
09.08.2004, 23:27
нене
это и НЕ МОЖЕТ работать ни с каким объектом.
конструкция вида this = ... не работает ни при каких обстоятельствах.

но в случае массива можно воспользоваться методом Array.splice, который редактирует исходный массив