Форум 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=209501)

warsem 16.11.2014 15:55

фильтр для строк
 
Привет всем,

Интересует следующее: Есть ли в AS3 какие-то готовые тулзы для анализа строки?
Надо проверить состоит строка из разрешённых символов или там есть лишние символы.

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

zCHESNOKz 16.11.2014 15:59

Работа с символами в строках

warsem 16.11.2014 16:12

ну я про это и говорю: тут тоже проходишь всю строку по символам. А я интересуюсь, есть ли встроенная функция, которая будет делать тоже самое, что делает моя самодельная функция.

А тобишь: проверять, состоит строка из разрешенных символов или там есть левые.

dimarik 16.11.2014 16:40

http://help.adobe.com/en_US/as3/dev/...80cb-7ff6.html

Wolsh 16.11.2014 16:42

http://help.adobe.com/ru_RU/FlashPla.../3/RegExp.html

Gerbert 16.11.2014 16:51

Цитата:

хочется более красивого решения
Лично для меня методы реализуемые классом String, самое красивое решение.
Мне больше нравится потренироваться перебирая строку со сложным условием
в цикле, чем при помощи "элегантного" RegExp.

nubideus 16.11.2014 19:09

задача отфильтровать все символы в строке, которых нет в chars
Код AS3:

//задротство
var chars:String = "abc";
var str:String = "acdbag";
 
var resultStr:String = "";
 
var startSlice:uint = 0;
m: for (var i:uint = 0; i < str.length; i++ ) {
        var char:String = str.charAt(i);
        for (var j:uint = 0; j < chars.length; j++ ) {
                var goodChar:String = chars.charAt(j);
                if (char === goodChar) {
                        continue m;
                }
        }
        if (i - startSlice > 0) {
                resultStr += str.slice(startSlice, i);
        }
        startSlice = i + 1;
}
resultStr += str.slice(startSlice);
trace(resultStr); // acba

VS
Код AS3:

//функциональное задротство
var chars:String = "abc";
var str:String = "acdbag";
 
var resultStr:String = str.split("").filter(function(char:String, ...args):Boolean {
        return chars.split("").some(function(goodChar:String, ...args):Boolean {
                return char === goodChar;
        });
}).join("");
trace(resultStr); // acba

VS
Код AS3:

var str:String = "acdbag";
trace(str.replace(/[^abc]/g, "")); // acba


Gerbert 16.11.2014 19:21

А я считаю, что обожествление последнего варианта и приводит к задротским примерам выше.
Вы исполнили их задротски. И это задротство будет приследовать Ваш код по всюду.
И отрицать это бесполезно, так как задротство оно везде.

nubideus 16.11.2014 19:47

Цитата:

А я считаю, что обожествление последнего варианта и приводит к задротским примерам выше.
Вы исполнили их задротски. И это задротство будет приследовать Ваш код по всюду.
И отрицать это бесполезно, так как задротство оно везде.
што

кто обожествляет регекспы? у них только один плюс - быстро пишутся.
их невозможно читать[ и отлаживать], и возможности у них ограничены.

> Вы исполнили их задротски.
а как же практика?
> Мне больше нравится потренироваться перебирая строку
какой смысл писать это:
Код AS3:

var chars:String = "abc";
var str:String = "acdbag";
 
var resultStr:String = "";
 
m: for (var i:uint = 0; i < str.length; i++ ) {
        var char:String = str.charAt(i);
        for (var j:uint = 0; j < chars.length; j++ ) {
                if (char === chars.charAt(j)) {
                        resultStr += char;
                }
        }
}
trace(resultStr); // acba

мне это писать не интересно и нудно. слишком неэффективный код в плане чтения, писания, смысловой нагрузки, практики 0. а вот в первом варианте я делаю всего три конкатенации.

Цитата:

И это задротство будет приследовать Ваш код по всюду.
да спасет меня code review

Добавлено через 8 минут
ну а вообще, простые задачи нужно решать просто. а в конкретном случае регэксп самое простое решение.

Gerbert 16.11.2014 21:08

Цитата:

кто обожествляет регекспы? у них только один плюс - быстро пишутся.
Ну я тогда боюсь с Вами продолжать общаться, так как не понимаю Вас.
Если бы я написал коммент к коду, что это задротство, то это бы означало, что это плохо.

А дальше что творится? Вы трезвый?
Цитата:

кто обожествляет регекспы? у них только один плюс - быстро пишутся.
их невозможно читать[ и отлаживать], и возможности у них ограничены.
А после Вашего кода выполняющего сортировку, Вы говорите -
Цитата:

мне это писать не интересно и нудно. слишком неэффективный код в плане чтения
Я это понимаю, как - мне и это и то не нравиться и все это не эффективно...
А дальше вообще говорите о каком-то первом варианте.

Цитата:

какой смысл писать это:
Вы понимаете, что это у Вас оно ЭТО? Я тоже не вижу смысла писать ЭТО.
Но все дело в том, что написания ЭТОГО говорит о том, что у Вас существуют двери,
которые Вы ещё не открывали. И при чем это одни из самых первых дверей.


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

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