我发现大多数知名的 javascript 库(例如 jquery、YUI...等)都缺少许多高级功能。以字符串操作为例,startsWith、endsWith、contains、lTrim、rTrim、trim、isNullOrEmpty...等。这些功能其实都是很常见的。
我想知道是否存在一个javascript库/javascript库插件可以填补这些空白(包括但不限于字符串操作)?
如果库不重写原型那就太好了。
看看 underscore.js (遗憾的是,没有字符串操作,但有很多其他好东西)。
大多数字符串函数都可以使用与字符串对象关联的其他方法来使用,例如
var myString = 'hello world';
myString.indexOf('hello') == 0; //same as startsWith('hello');
如果您愿意,您可以将这些函数包装到其他函数中。我认为向字符串对象添加原型将是到达那里的方法,并且您找到的任何库都可能会沿着这条路线走下去。
ms ajax core库包含所有这些字符串方法以及日期方法等。基本上是将.net引入js的勇敢尝试。
您不需要加载整个 MS Ajax js 堆栈,只需加载核心文件。
var StringWrapper = (function(){
var wrapper = {
string: null,
trim: function(){
return this.string.replace(/^\s+|\s+$/g, "");
},
lTrim: function(){
}
};
return function(string){
wrapper.string = string;
return wrapper;
};
})();
StringWrapper(" aaaa bbbb ").trim(); /// "aaaa bbbb"
这些函数只被创建一次,因此非常高效。但是在辅助对象上使用包装器确实会产生一次额外的函数调用。
underscore.string看起来可能适合您的需求。他们是这样描述的:
Underscore.string 是一个 JavaScript 库,用于舒适地操作字符串,Underscore.js 的扩展受到 Prototype.js、Right.js、Underscore 和漂亮的 Ruby 语言的启发。Underscore.string 为您提供了几个有用的函数:capitalize、clean、includes、count、escapeHTML、unescapeHTML、insert、splice、startsWith、endsWith、titleize、trim、truncate 等。