AS2字符串替换字符数组?
问题描述:
我有一个在ActionScript 2中很好的功能,除了它只能替换一个字符。我需要它更像PHP中的str_replace,并替换字符数组。AS2字符串替换字符数组?
这里是我现在的代码,它只是用字符串中的连字符( - )替换空格()。
function str_replace(str){
return str.split(" ").join("-");
}
我所试图做的是从ActionScript字符串URL中使用代替空格,逗号和字符的组合(例如,空格和逗号)。
所以这个:
Shop, Dine, Play
将成为此:
Shop-Dine-Play
任何建议都非常感谢! :)
答
对于您的情况,最简单的方法是按照从最长到最短的顺序执行一系列split/join命令。
例如,
txt = txt.split(", ").join(-)
txt = txt.split(",").join(-)
txt = txt.split(" ").join(-)
所以,你没有得到店 - 用餐 - 玩,你替换”, “第一,然后” “ 要么 ” ”。
答
这是否适合你?
function replace(txt:String, fnd:String, rep:String):String
{
return txt.split(fnd).join(rep);
}
trace(replace("Shop, Dine, Play", ", ", "-"));//Shop-Dine-Play
即你搜索可以包含多个字符,在这种情况下,字符串“”
答
如果你想用文字的另一个数组来代替字符数组,你可以这样做
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
注意,这是REA如果要替换长字符串中的大量字符,则不是最佳选择。
答
@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'
这很好用!我只是稍微修改它以使用我的函数: str = str.split(“,”).join(' - '); – 2009-08-10 22:15:24