【发布时间】:2011-03-16 11:46:18
【问题描述】:
我有一个函数可以纠正异常大写单词列表的大小写:
var line = "some long string of text";
["AppleScript", "Bluetooth", "DivX", "FireWire", "GarageBand",
"iPhone", "iTunes", "iWeb", "iWork", "JavaScript", "jQuery", "MacBook",
"MySQL", "PowerBook", "PowerPoint", "QuickTime", "TextEdit", "TextMate",
// ...
"Wi-Fi", "Xcode", "Xserve", "XMLHttpRequest"].forEach(function(name) {
line = line.replace(RegExp(name, "gi"), name);
});
现在我面临的问题是大多数输入字符串平均包含 0 到 3 个这些单词。显然,现在我正在执行数十个(可能还有数百个;随着时间的推移,该数组有一种不可思议的增长趋势)函数调用,这些函数调用基本上什么都不做。
我怎样才能使这段代码更快并摆脱不必要的函数调用?
示例输入:
我的 iphone 应用程序在 UIViewController 下有一个用户表单。当我再次启动应用程序时,我的一些 UIView 会更改其位置和大小。 (这些 UIViews 取决于键盘位置)某处绝对是我的错。我试图弄清楚当应用程序从后台再次启动时发生了什么以及 UIView 更改可以在哪里完成。
【问题讨论】:
-
这些电话不是不必要的吗?如果您想检查每个字符串是否大写,那么您需要检查每个字符串...仅仅因为它不存在并不意味着不需要检查...
-
@Sam 但是在整个输入中是否有必要?或者可以设计一个更智能的正则表达式,在一个函数调用中完成所有检查?
标签: javascript regex performance