我从mxl加载字符串。 一些字符串是文件路径,其中一些只是普通字符串。 如何确定谁是文件以及谁是常规字符串?
由于
答案 0 :(得分:2)
如果您可以编辑xml,我会在我的xml结构中使用<file>
或<string>
标记(或属性)。然后在阅读它时,你知道它是什么,而没有额外的开销,看看文件是否存在。
如果要检查文件是否存在,而不使用AIR或其他第三方swf包装器,可以尝试使用URLRequest
,URLLoader
加载路径并侦听
IOErrorEvent.IO_ERROR
(它不存在)
Event.COMPLETE
(已加载,确实存在)。
如上所述,最好的方法是编辑xml。
答案 1 :(得分: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');
答案 2 :(得分:0)
您可以对每个字符串使用正则表达式检查。 This页面解释了RegExp语法的用法和一些示例。正则表达式包含的内容取决于文件位置的外观,但您可以查找的是文件类型后缀。
我刚刚找到this tool来构建和测试正则表达式。
以下正则表达式将匹配以文件扩展名结尾的任何单词(没有空格的子字符串),例如.pdf或.mp3。但它也会识别.com,.org等,所以希望你的字符串不包含网站网址。
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.