我从 mxl 加载字符串。有些字符串是文件路径,有些只是普通字符串。如何确定谁是文件,谁是常规字符串?
谢谢
如果您可以编辑 xml,我会在我的 xml 结构中使用<file>
or<string>
标记(或属性)。然后,当您阅读它时,您可以确定它是什么,而无需查看文件是否存在的额外开销。
如果您想检查文件是否存在,而不使用 AIR 或其他 3rd 方 swf 包装器,您可以尝试使用 加载路径URLRequest
并URLLoader
监听
IOErrorEvent.IO_ERROR
(它不存在)
Event.COMPLETE
(它已加载,并且确实存在)。
如前所述,最好的方法是编辑 xml。
如果文件路径遵循其他字符串不遵循的特定模式,则可以根据该模式进行区分。例如,如果所有路径都以 开头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');
您可以对每个字符串使用正则表达式检查。本页解释了 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.