【发布时间】:2010-11-03 09:18:27
【问题描述】:
在将替换所有功能添加到我的 Flex 项目中时,我需要一些帮助。我希望以尽可能自然的方式来做这件事。
我想要实现的是能够运行这段代码(使用 Flex 编译器)"aabbaaba".replaceAll("b","c") 并获得 "aaccaaca"。我还想链接replaceAll 调用。
注意:我实际上不会用cs 替换bs,而是在编码时不知道的各种字符串!
我不想要的:
1. 使用带有全局标志的正则表达式。要替换的标记是确定的广告运行时间,将它们转换为正则表达式并不简单。
2. 使用StringUtil.replace 方法。这是一个静态方法,链接很丑。
3.链split和join。因为在阅读代码时可能会让其他人感到困惑。
4.禁用严格类型检查。我想对我的其余代码进行类型检查。
这是我目前所拥有的:
String.prototype.replaceAll = function(replace:String, replaceWith:String):String{
return this.split(replace).join(replaceWith);
}
并且可以这样调用:
"aababacaaccb"["replaceAll"]("b", "c")["replaceAll"]("c", "a");
另外,是否有反对通过原型扩展对象的建议? 我也会接受一个强烈反对通过原型扩展 String 对象的答案。
谢谢你,
阿林
【问题讨论】:
-
如果投反对票的人能够证明他们的行为是正当的,以便我能够改进问题,那就太好了。谢谢。
-
wtf?你不想使用正则表达式?那么即使进行字符串搜索/替换又有什么意义呢?你正在替换一个字符串。使用字符串函数。在正则表达式中使用变量并不难……
-
@Daniel 你可能不明白这个问题。或者没有仔细阅读。我想要做的是拥有
StringUtil.replace所做的事情,但直接作为我的 String 对象上的方法。我没有模式,我只有一个要替换的字符串。有很多方法可以做到这一点,但我想要一些 clean (如字符串方法)或尽可能干净(如 9re 或 Juan Pablo Califano 建议的)。 -
@Daniel 你也没有连贯。我不是指你英语不好(这很奇怪,因为你的个人资料显示你来自纽约),而是指你自相矛盾的事实。例如:“你不想使用正则表达式?”与“您正在替换字符串。使用字符串函数。”。
-
好吧,您似乎已经回答了自己的问题。你说你想替换,但你不想使用正则表达式,也不想加入,也不想拆分,也不想 StringUtil.replace,也不想类型检查。 wtf。 StringUtil.prototype.replaceAll = function(r:String, w:String):String { return this.replace(new RegExp(r, 'g'), w); )
标签: apache-flex actionscript-3 oop actionscript