0

我从 mxl 加载字符串。有些字符串是文件路径,有些只是普通字符串。如何确定谁是文件,谁是常规字符串?

谢谢

4

3 回答 3

2

如果您可以编辑 xml,我会在我的 xml 结构中使用<file>or<string>标记(或属性)。然后,当您阅读它时,您可以确定它是什么,而无需查看文件是否存在的额外开销。

如果您想检查文件是否存在,而不使用 AIR 或其他 3rd 方 swf 包装器,您可以尝试使用 加载路径URLRequestURLLoader监听

IOErrorEvent.IO_ERROR(它不存在)

Event.COMPLETE(它已加载,并且确实存在)。

如前所述,最好的方法是编辑 xml。

于 2012-02-01T15:53:50.143 回答
0

如果文件路径遵循其他字符串不遵循的特定模式,则可以根据该模式进行区分。例如,如果所有路径都以 开头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');
于 2012-02-01T15:50:11.520 回答
0

您可以对每个字符串使用正则表达式检查。本页解释了 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.
于 2012-02-01T17:02:44.560 回答