Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Разбор строки при памощи регулярного вырожения (http://www.flasher.ru/forum/showthread.php?t=169399)

pashadoba 04.10.2011 17:27

Разбор строки при памощи регулярного вырожения
 
Привет всем!

Подскажите какое должно быть регулярное выражение, чтобы из строки:

Код AS3:

ставка 1%/2%/3%/4%/5% результат 60/75/90/105/120 иконок.

циклом получить:

Код AS3:

ставка 1% результат 60 иконок.
ставка 2% результат 75 иконок.
ставка 3% результат 90 иконок.
ставка 4% результат 105 иконок.
ставка 5% результат 120 иконок.

Т.е. как добраться до этих значений, вырезать из строки и подменить единственным значением на n-ом шаге?

in4core 04.10.2011 17:33

хорошо бы в этой строке убрать названия. тогда и без регулярки обойтись можно.

Код AS3:

str = str.split('ставка ').join('').split(' результат ').join('/').split(' иконок').join('');
var a:Array = str.split('/');
var b:int = a.length / 2;
for(var i:int = 0 ; i< a.length; i++)  trace( ' text1 ' + a[i]' text2 ' + a[i + b]);


Inet_PC 04.10.2011 17:36

Код AS3:

var s: String = '1%/2%/3%/4%/5%';
var ar: Array = s.split('/');
for (var i:int=0;i<ar.length;++i)
{
ar[i] = 60 + (int(ar[i].substr(0, 1)) - 1) * 15;
}
 
s = ar.join('/');

Добавлено через 1 минуту
О блин, опаздал) Да еще не совсем понял((

pashadoba 04.10.2011 17:49

таким способом понятно

но возникает ситуация, когда строки меняются, т.е. будет не
Код AS3:

ставка 1%/2%/3%/4%/5% результат 60/75/90/105/120 иконок.

а
Код AS3:

 проценты 10%/20%/30%/40%/50% начислено 600/750/900/1050/1200 денег.

нужно как-то вытащить значения

TWETTI 04.10.2011 17:57

Вот так делается через регулярные выражения:
Код AS3:

var r1:RegExp = /(?:\d+%\/?){5}/;
var r2:RegExp = /(?:\d+\/?){5}/;
var r3:RegExp = /[а-я]+/;
var r4:RegExp = /[а-я]+\./;
 
var string:String = "проценты 10%/20%/30%/40%/50% начислено 600/750/900/1050/1200 денег."
 
var arrayOfPerc:Array = String(r1.exec(string)).split("/");
var arrayOfNums:Array = arrayOfNums = String(r2.exec(string)).split("/");
 
var firstWord:String = r3.exec(string);
var lastWord:String = r4.exec(string);
 
 
var len:int = arrayOfNums.length;
 
for (var i:int = 0; i < len; i++)
{
        trace(firstWord + " " + arrayOfPerc[i] + " результат " + arrayOfNums[i] + " " + lastWord);
}

Выводит:
Код AS3:

проценты 10% результат 600 денег.
проценты 20% результат 750 денег.
проценты 30% результат 900 денег.
проценты 40% результат 1050 денег.
проценты 50% результат 1200 денег.


in4core 04.10.2011 18:01

TWETTI ваш вариант ему тоже не подходит

TWETTI 04.10.2011 18:04

Цитата:

Сообщение от in4core (Сообщение 1036650)
TWETTI ваш вариант ему тоже не подходит

Почему?

pashadoba 04.10.2011 18:18

TWETTI, то что нужно, спасибо

in4core 04.10.2011 18:19

Цитата:

Почему?
Теперь все верно))))))


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

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