我有一个在Actionscript 2中运行良好的函数,除了它只能替换一个字符。我需要它在PHP中表现得更像str_replace并替换一个字符数组。
这是我现在的代码,它只是用String中的连字符( - )替换一个space()。
function str_replace(str){
return str.split(" ").join("-");
}
我要做的是从Actionscript字符串替换空格,逗号和字符组合(例如空格和逗号),以便在URL中使用。
所以这个:
Shop, Dine, Play
将成为这个:
Shop-Dine-Play
非常感谢任何建议! :)
答案 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'