2009-04-14 11 views
1

私はこの作業がAS3で挑戦的であることを見出しています。アクションスクリプト3:フルファイルパスの "\"文字をエスケープするときの問題

これを行うことのできる基本的な/単純な方法や組み込みの方法が不足しています。私はRegExpに精通していません。

私はまさに "D:\一時\のabc.doc" のように見える完全なファイルパスを表すDYNAMIC文字列を持っています。 というファイル名部分を完全な文字列から抽出したいと思います。 abc.doc

"fullPath.lastIndexOf(" \\ ")"や正規表現のような技術に気付いています。問題は、あなたのパスに "\"がある場合にはうまくいかないということです。それは "/"で動作します。動的なパスは、 "\"を "/"または他の区切り文字に置き換えることはできません。私の解釈は、 "\"が文字をエスケープするために使用されているからです - "\"の後に現れる文字はすべてactionscriptによって無視されます。例えば

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

私は使用が原始文字列を取得するために、あなたの文字列にvalueOfプロパティを使用している場合、あなたが望む結果を得るかもしれないと思います。 Actionscript 3は、通常、エスケープ文字で魔法のような大きな文字列オブジェクトを作成しますが、プリミティブ文字列はJavaScript/ECMA文字列に似ていて、バックスラッシュは別の文字として表示されます。これをテストしていないが、試してみてください。

8

A\\B\\Cを使用する必要があります(ほとんどの言語と同じように、文字列リテラルではエスケープされていない\は次の文字と組み合わせてエスケープシーケンスを作成します)。私はあなたが動的な文字列を正しく生成していないと感じています。文字列がパスであると想定されている場合は、\\を使用してバックスラッシュをエスケープして、パスフラグメント間に別の\文字を含める必要があります。

0

問題が指摘しているように、問題は文字列リテラルの代わりに文字列値を使用しています。 Thisリンクが私を助けてくれました。

関連する問題