2009-08-05 15 views
1

私は、1つの文字だけを置き換えることができるという点を除いて、Actionscript 2でうまく機能する関数を持っています。 PHPでstr_replaceのように動作し、文字の配列を置き換える必要があります。AS2文字の配列の文字列置換?

これは私が今使っているコードです。スペース()を文字列のハイフン( - )に置き換えるだけです。私がやろうとしています何

function str_replace(str){ 
    return str.split(" ").join("-"); 
} 

は、URLで使用するためのActionScriptの文字列からスペース、カンマ、および文字の組み合わせ(例:スペースとカンマ)を置き換えるです。

ので、この:

Shop, Dine, Play 

このなります:

Shop-Dine-Play 

任意の提案は大歓迎です! :)

答えて

1

あなたの場合、最も簡単な方法は、分割/結合コマンドのシーケンスを最長から最短の順序で実行することです。

例えば、

txt = txt.split(", ").join(-)

txt = txt.split(",").join(-)

txt = txt.split(" ").join(-)

あなたがショップを取得しないように - お食事 - プレイ、あなたは交換してください」、 "最初の、そして"、 "または" "。

+0

これは素晴らしい機能でした!私はちょうど私の関数で動作するように少し修正しました: str = str.split( "、").join( ' - '); –

0

これは機能しますか?この場合には、複数の文字を含めることができるため、あなたが検索した文字列すなわち

function replace(txt:String, fnd:String, rep:String):String 
{ 
    return txt.split(fnd).join(rep); 
} 

trace(replace("Shop, Dine, Play", ", ", "-"));//Shop-Dine-Play 

「」

0

あなたは文字の他の配列と文字の配列を置換したい場合は、あなたのような何かを行うことができます

function replace(str:String, toFind:Array, toReplace:Array):String 
{ 
    if(toFind.length != toReplace.length) 
     throw new Error("Error : Find and replace array must match in length"); 


    for(var i:Number = 0; i < toFind.length; i++) 
    { 
     str = str.split(toFind[i]).join(toReplace[i]); 
    } 

    return str; 
} 

そして、このようにそれを使用します。これはレアであることを

replace("abc", ["a", "b", "c"], ["c", "b", "a"]); //result cba 

注意あなたが長い文字列の文字の多くを置き換える場合は最適ではありません。

0

@Ryan - 私のコメントはすべての書式設定を失ったので、ここでもまたです。そして、私はそれがもともと提供したstr_replace関数と同じであることを認識しました。それは動作します!

as2またはas3?いずれにしても、動的テキストをパラメータとして関数を呼び出して、AS2のonPress()関数内またはAS3のリスナーをクリックして呼び出すことができます。私は実際にAS3でstr_replaceの部分をテストしていませんが、それはうまくいくはずです - 下の例。

private var newString:String; 

// elsewhere in your document 
private function str_replace(str:String):String { 
    return str.split(" ").join("-"); 
} 
private function textClickListener(e:MouseEvent) { 
    if(e.target is TextField){ 
     newString = str_replace(e.target.text); 
     trace(newString); // outputs theTextField.text; 
    } 
} 
theTextField.addEventListener(MouseEvent.CLICK, textClickListener); 
// this assumes you have a dynamic text field named 'theTextField'