AS2字符串替换字符数组?

时间:2009-08-05 21:42:35

标签: arrays string actionscript-2

我有一个在Actionscript 2中运行良好的函数,除了它只能替换一个字符。我需要它在PHP中表现得更像str_replace并替换一个字符数组。

这是我现在的代码,它只是用String中的连字符( - )替换一个space()。

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

我要做的是从Actionscript字符串替换空格,逗号和字符组合(例如空格和逗号),以便在URL中使用。

所以这个:

Shop, Dine, Play

将成为这个:

Shop-Dine-Play

非常感谢任何建议! :)

4 个答案:

答案 0 :(得分:1)

对于您的情况,最简单的方法是按照从最长到最短的替换顺序执行一系列split / join命令。

如,

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

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

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

所以你没有得到Shop - Dine - Play,你首先替换“,”,然后“,”或“”。

答案 1 :(得分:0)

这对你有用吗?

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

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

即。您搜索的字符串可以包含多个字符,在本例中为“,”

答案 2 :(得分: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

请注意,如果要替换长字符串中的大量字符,这实际上并不是最佳的。

答案 3 :(得分:0)

@Ryan - 我的评论丢失了所有格式,所以这里又是。我刚刚意识到它与我最初提供的str_replace功能相同。但它有效!

as2或as3?无论哪种方式,您只需使用动态文本作为参数调用str_replace()函数,在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'