2011-11-10 9 views
-2

文字列に対して分割関数に奇妙な問題があります。私の例を見てください、どうすればそれを理解できますか?それはデフォルトでStringから "\"を削除しますか?文字列分割 ""文字を非表示にして削除します

public function code01():void { 
    qrShow("C:/Documents and Settings/me/Desktop/a.gif;C:/Documents and Settings/me/Desktop/b.gif"); 
    qrShow("C:\Documents and Settings\me\Desktop\a.gif;C:\Documents and Settings\me\Desktop\b.gif"); 
} 

public function qrShow(u:String):void{ 
    var imgArray:Array = u.split(";"); 
    for each(var addrs:String in imgArray) { 
     trace (" --- " + addrs); 
    } 
} 

結果は次のようになります

--- C:

a.gif/DocumentsとSettings/ME /デスクトップ/ --- C:/ DocumentsとSettings/me/Desktop/b.gif

--- C:Documents and SettingsmeDesktopa.gif < ---なぜ「\」ですか?

--- C:Documents and SettingsmeDesktop.gif < ---なぜ "\"と "b"も変更されないのですか?

これはFlashのバグですか?

+0

エスケープ文字は:ref:http://en.wikipedia.org/wiki/Escape_character – LisztLi

答えて

3

あなたは(別のバックスラッシュ付き)、バックスラッシュをエスケープする必要がありますので、バックスラッシュを二重、あなたのコードを修正します。例えば

はこれを実行してみてください。

trace("\"); 

あなたがエラーを取得します。

trace("\\"); // Output: \ 
3

実際には、バックスラッシュ\がActionScriptのエスケープ文字であるためです。次の文字に特別な意味がない場合、バックスラッシュは単に無視されますが、通常はそれに続くものの意味を変更するために使用されます。

qrShow("C:\\Documents and Settings\\me\\Desktop\\a.gif;C:\\Documents and Settings\\me\\Desktop\\b.gif"); 
+1

それはスラッシュを使用することをお勧めします(すべてのOS上で動作します) –

+0

@JonatanHedborg:あなたはこれを実行する必要が

しかし、それは質問に含まれています... – Ryan

関連する問題