Как определить файл или обычную строку? AS3 - PullRequest
0 голосов
/ 01 февраля 2012

Я загружаю строки из mxl.Некоторые строки представляют собой пути к файлам, а некоторые - просто обычные строки.Как я могу определить, кто является файлом, а кто является обычной строкой?

Спасибо

Ответы [ 3 ]

2 голосов
/ 01 февраля 2012

Если вы можете редактировать xml, я бы использовал тег (или атрибут) <file> или <string> в моей структуре xml. Затем, когда вы читаете его, вы точно знаете, что это такое, не тратя лишних затрат на проверку того, существует ли файл.

Если вы хотите проверить, существует ли файл, без использования AIR или другой сторонней оболочки SWF, вы можете попытаться загрузить путь, используя URLRequest, URLLoader и прослушивая

IOErrorEvent.IO_ERROR (не существует)

Event.COMPLETE (он загружен и существует).

Как уже упоминалось, лучший способ - отредактировать xml.

0 голосов
/ 01 февраля 2012

Вы можете использовать проверку регулярного выражения для каждой строки. Эта страница объясняет использование и некоторые примеры синтаксиса RegExp. То, что включает в себя ваше регулярное выражение, зависит от того, как выглядят ваши местоположения файлов, но одну вещь, которую вы можете искать, это суффикс типа файла.

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

Следующее регулярное выражение будет соответствовать любому слову (подстроке без пробелов), заканчивающемуся расширением файла, например .pdf или .mp3. Но он также распознает .com, .org и т. Д., Поэтому, надеюсь, ваши строки не содержат URL-адресов веб-сайтов.

var str:String = inputString; // Each string you want to test.
var regEx:RegExp = /\.[a-zA-Z0-9]+\b/; // Note that no quotes are needed.
var matches:Boolean = regEx.test(str); // True for match, false for no match.
0 голосов
/ 01 февраля 2012

Если пути к файлам следуют определенному шаблону, которого не придерживаются другие строки, вы можете различать на основе этого шаблона. Например, если все пути начинаются с http://, вы можете проверить наличие строк на http://. Если такого различия между путями и другими строками нет, вы можете добавить атрибут или дочерний элемент к своим тегам XML, чтобы указать, какие элементы XML содержат пути. Вот пример:

XML

<root>
    <string>abc<string>
    <string isPath="true">abc.txt</string>
    <string isPath="false">xyz</string>
</root>

AS3

var xml:XML; // I'm assuming that this variable already contains the XML

var paths:XMLList = xml.string.(@isPath == 'true');
var regularStrings:XMLList = xml.string.(@isPath != 'true');
...