web-dev-qa-db-ja.com

ActionScript 3 .replace()は最初のインスタンスのみを置き換えます

Flash ActionScript 3では、テキスト文字列内のフレーズのすべてのインスタンスを別のフレーズに置き換えるという、単純だと思った何かをしようとしています。ただし、何らかの理由で最初のインスタンスのみが置き換えられ、残りは無視されます。文字列置換関数を約9回実行してソリューションをハッキングし、最終結果にすべての<br />置き換えられましたが、何が間違っているのか知りたいのですが。前もって感謝します!

私のコード:

var importPostAddress = "123 Fake Street<br />Mytown<br />Mycounty<br />Mycountry<br />PO5 7CD<br /><br />";
var postAddress = importPostAddress.replace("<br />",", ");

postAddressをトレースするときに期待される結果:

123 Fake Street, Mytown, Mycounty, Mycountry, PO5 7CD, , 

実結果:

123 Fake Street, Mytown<br />Mycounty<br />Mycountry<br />PO5 7CD<br /><br />
17
Craig

これを修正するには、もう少し作業を行う必要があります。

var importPostAddress = "123 Fake Street<br />Mytown<br />Mycounty<br />Mycountry<br />PO5 7CD<br /><br />";
var pattern:RegExp = /<br \/>/g;
var postAddress = importPostAddress.replace(pattern,", ");

/ gフラグを渡すためにRegExpを使用しています。これにより、置換globalが行われます(見つかった式のすべてのインスタンスを置き換えます)。また、正規表現の制御文字としてバックスラッシュ/を使用して、<br />\をエスケープする必要がありました。

29
Sam DeHaan

サムには良い解決策があります。もう1つは次のとおりです。

postAddress = importPostAddress.split("<br />").join(",");
22
ToddBFisher