1


0

AS3では、この作業は難しいと思います。

私がこれを行うことができる何か基本的な/簡単なものまたは何らかの組み込みの方法が足りない場合は失礼します。 私はRegExpに精通していません。

"* d:\ temp \ abc.doc "のような完全なファイルパスを表す DYNAMIC 文字列があります。 私は完全な文字列から filename *の部分を抽出したい。 * abc.doc *

私は "fullPath.lastIndexOf(" \\ ")"や正規表現を使うようなテクニックを知っています。 問題は、パスに "\"があるとうまくいかないようです。 "/"で動作します。 動的なパスを操作して、「\」を「/」または他の区切り文字に置き換えることはできません。 私の解釈では、 "\"は文字をエスケープするために使用されるので、 "\"の後に現れる文字は* actionscript *によって無視されます。 例えば

var fullPath:String = "A \ B \ C";

trace(fullPath.length); // ** RETURNS 3 ** "\ B"以降

var bSlash:int = fullPath.lastIndexOf( "\\")//戻り値**  -  1 **

3 Answer


8


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


0


プリミティブな文字列を取得するためにあなたの文字列に `valueOf`プロパティを使うなら、あなたが望むものを得るかもしれないと思います。 ActionScript 3は通常、エスケープ文字を使って不思議なことをする大きな空想的な文字列オブジェクトを作成しますが、プリミティブ文字列はJavaScript / ECMA文字列のようなもので、バックスラッシュは別々の文字として表示されます。 これをテストしていませんが、試してみてください。


0


率直に指摘したように、問題は文字列リテラルの代わりに文字列値を使用することです。 このリンクをクリックすると、これを整理することができました。