Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   String.replace() ? (http://www.flasher.ru/forum/showthread.php?t=121011)

Bruiser 05.02.2009 10:54

String.replace() ?
 
Подскажите. Что-то по документации не разобрался.
Нужно из стринга, например "%*tester*%" удалить все % и *.
Вот так не получается:
Код:

var str:String = "%*tester*%";
var regExp:RegExp = new RegExp("*%","g");           
str = str.replace(regExp,"");
trace(str);


_Smirnoff 05.02.2009 11:30

Попробуй
Код AS3:

new RegExp('\*%|\%\*', 'g');

А так в помощь http://gskinner.com/RegExr/

Bruiser 06.02.2009 13:17

только вот так
Код:

var regExp:RegExp = /\%|\*/g;
И вот еще один занимательный сайт на эту тему
http://ryanswanson.com/regexp/

_Smirnoff 08.02.2009 23:01

Bruiser, ваш вариант уступит в производительности, и так окончательный вариант

Код AS3:

var regExp:RegExp =  /\*%|%\*/g;   // путем присвоения литерала
var regExp:RegExp = new RegExp('\\*%|%\\*', 'g'); // с помощью конструктора


etc 09.02.2009 00:13

Без разницы, вообще говоря, с использованием конструктора или нет.

wvxvw 09.02.2009 05:04

Разница будет в десятитысячные доли секунды... вариант с вызовом конструктора будет совсем немного, но дольше :) но в случае, если вам не нужно, например, в цикле создавать тысячи регулярных выражений, то разницы вы не заметите.

Bruiser 09.02.2009 10:43

Если выполнить код
Код:

var str:String = "%*te*st%er*%";
var regExp:RegExp =  /\*%|%\*/g;
str = str.replace(regExp,"");

тогда str будет "te*st%er"

если же
Код:

var str:String = "%*te*st%er*%";
var regExp:RegExp = /\%|\*/g;
str = str.replace(regExp,"");

str будет как надо "tester".

MaxL 09.04.2009 20:48

А для AS 2.0 есть что-то? У меня только 2.0 :(

etc 09.04.2009 22:50

Были реализации RegExp и на AS2.

MaxL 09.04.2009 22:55

Вот примерчик из столетней книжки
Код AS1/AS2:

re = new RegExp("shoot|crud|darn", "gi");
str = new String ("Shoot! More darn regular expression crud!");
rStr = str.replace(re, "%#@$");
trace(rStr);

Дебагер мне пишет что нету "RegExp" и в помине, а моя программа работает только с ас2

etc 09.04.2009 23:01

Так найдите класс RegExp под ActionScript 2.0 в гугле.

wvxvw 10.04.2009 00:03

Ну так не родной класс плеера, а самописный... Посмотрите, тут вроде был... но это все столетней давности и ровно столько же лет никем не поддерживается...
http://osflash.org/as2lib

MaxL 10.04.2009 00:05

Млин..с анг. не дружу, так что вешаться) Как класс подключать? У меня же не Macromedia...

wvxvw 10.04.2009 03:00

А при чем тут Макромедия?.. Я даж не знаю... ну а кто ж вам виноват, что вы вместо програмирования археологией занимаетесь :) Это как бы, что есть...
По поводу использования класса из as2lib - подключаете библиотеку к проекту, примерно так:
во Флеше:
Ctrl + Shift + F12 > Flash > Settings > Classpath > указать путь до папки содержащей папку org
и вот такой вот тестовый код:
Код AS1/AS2:

import org.as2lib.aop.matcher.RegexpMatcher;
 
var test:String = "some string containg A letter";
var matcher:RegexpMatcher = new RegexpMatcher();
 
trace(matcher.match(test, ".+A.+"));
trace(matcher.match(test, ".+B.+"));

RegexpMatcher не совсем похож на нормальный RegExp... и наверняка в нем есть куча багов, но сами понимаете, если проект последний раз обновлялся в 2005 году, то никто там ничего править не будет...


Часовой пояс GMT +4, время: 13:19.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.