我发现这项任务在AS3中具有挑战性。
对不起,如果我遗漏了一些基本的/简单的或者一些可以做到这一点的内置方法。我对RegExp并不熟悉。
我有一个 DYNAMIC 字符串,表示完整的文件路径,看起来与“ d:\ temp \ abc.doc ”完全相同。我想从完整的字符串中提取文件名部分,例如的 abc.doc 即可。
我知道使用“fullPath.lastIndexOf(”\\“)”或正则表达式等技巧。问题是,如果你的路径中有“\”,它似乎不起作用。它适用于“/”。无法操纵动态路径将“\”替换为“/”或任何其他分隔符。我的解释是,因为“\”用于转义字符 - actionscript 会忽略出现在“\”之后的任何字符。 e.g。
var fullPath:String = "A\B\C";
trace(fullPath.length); //**RETURNS 3** since "\B" & "\C"
// are being treated as SINGLE chars
var bSlash:int = fullPath.lastIndexOf("\\") //RETURNS **-1**
答案 0 :(得分:8)
您需要使用A\\B\\C
(与大多数语言一样,在AS中,字符串文字与未转义的\
通过组合下一个字符创建转义序列)。我觉得你没有正确生成动态字符串。如果该字符串应该是一个路径,那么它应该在路径片段之间包含一个单独的\
字符,方法是使用\\
转义反斜杠。
答案 1 :(得分:0)
我认为如果在字符串上使用valueOf
属性来获取原始字符串,您可能会得到您想要的结果。 Actionscript 3通常创建一个很大的花式字符串对象,它使用转义字符来处理神奇的事物,但是原始字符串更像是一个JavaScript / ECMA字符串,反斜杠应该显示为单独的字符。没有测试过,但试试看。
答案 2 :(得分:0)
正如dirkgently指出的那样,问题是使用字符串值而不是字符串文字。 This链接帮我整理了这个。