![]() |
|
||||||||||
|
|||||
|
Регистрация: May 2011
Сообщений: 72
|
Привет всем,
Интересует следующее: Есть ли в AS3 какие-то готовые тулзы для анализа строки? Надо проверить состоит строка из разрешённых символов или там есть лишние символы. На данный момент делаю пробег по всей строке и проверяю каждый символ. Не то что бы это тормозило все приложение, но с врожденной занудностью и перфекционизмом хочется более красивого решения. |
|
|||||
|
Регистрация: May 2013
Адрес: (0, 0)
Сообщений: 176
|
|
|
|||||
|
Регистрация: May 2011
Сообщений: 72
|
ну я про это и говорю: тут тоже проходишь всю строку по символам. А я интересуюсь, есть ли встроенная функция, которая будет делать тоже самое, что делает моя самодельная функция.
А тобишь: проверять, состоит строка из разрешенных символов или там есть левые. |
|
|||||
|
.
|
|
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
__________________
Reality.getBounds(this); |
|
|||||
|
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Цитата:
Мне больше нравится потренироваться перебирая строку со сложным условием в цикле, чем при помощи "элегантного" RegExp. |
|
|||||
|
Регистрация: Jan 2013
Сообщений: 322
|
задача отфильтровать все символы в строке, которых нет в chars
//задротство 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 //функциональное задротство 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 |
|
|||||
|
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
А я считаю, что обожествление последнего варианта и приводит к задротским примерам выше.
Вы исполнили их задротски. И это задротство будет приследовать Ваш код по всюду. И отрицать это бесполезно, так как задротство оно везде. |
|
|||||
|
Регистрация: Jan 2013
Сообщений: 322
|
Цитата:
кто обожествляет регекспы? у них только один плюс - быстро пишутся. их невозможно читать[ и отлаживать], и возможности у них ограничены. > Вы исполнили их задротски. а как же практика? > Мне больше нравится потренироваться перебирая строку какой смысл писать это: 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 Цитата:
Добавлено через 8 минут ну а вообще, простые задачи нужно решать просто. а в конкретном случае регэксп самое простое решение. |
|
|||||
|
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Цитата:
Если бы я написал коммент к коду, что это задротство, то это бы означало, что это плохо. А дальше что творится? Вы трезвый? Цитата:
Цитата:
А дальше вообще говорите о каком-то первом варианте. Цитата:
Но все дело в том, что написания ЭТОГО говорит о том, что у Вас существуют двери, которые Вы ещё не открывали. И при чем это одни из самых первых дверей. |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|