2010-04-18 35 views
7

我發現許多高級函數在大多數着名的JavaScript庫(例如jquery,YUI等)中都缺少。以字符串操作爲例,startsWith,endsWith,contains,lTrim,rTrim,trim,isNullOrEmpty等等。這些功能實際上非常普遍。是否有一個JavaScript庫,其中包含一組豐富的非常高級別的常用功能?

我想知道是否存在一個JavaScript庫/插件的JavaScript庫,填補這些差距(包括但不限於字符串操作)?

如果庫不覆蓋原型,那將會很棒。

+0

爲什麼不把它添加到字符串原型? – cletus 2010-04-18 05:48:14

+2

@cletus因爲它可能與其他人編寫的庫/代碼有衝突。 – bobo 2010-04-18 05:50:17

回答

9

看看underscore.js(可悲的是,沒有字符串操作,但很多其他好東西)。

3

大多數的這些字符串函數可使用帶有字符串對象如

var myString = 'hello world'; 

myString.indexOf('hello') == 0; //same as startsWith('hello'); 

,如果你願意,你可以包裝這些功能成其他功能相關的其他方法。我認爲將原型添加到字符串對象將是去那裏的方式,任何你找到的庫都可能會沿着這條路線走下去。

+0

是的,它們可以使用與字符串對象相關的其他方法,但是這不夠高。 – bobo 2010-04-18 07:09:55

2

ms ajax core庫包含所有這些字符串方法以及日期方法等基本上是勇敢的嘗試將.net帶入js。

您不需要加載整個MS Ajax js堆棧,只是核心文件。

1

所有這一切很容易用包裝來實現,如果你不希望延長原型

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" 

只被創建一次的功能,所以它非常有效。但是在一個輔助對象上使用一個包裝會產生一個額外的函數調用。

+1

你能解釋一下這行是什麼:'lTrim:function(){...'? – FellyTone84 2013-10-29 20:12:01

1

underscore.string看起來可能會滿足您的需求。下面是他們如何描述它:

Underscore.string是JavaScript庫,舒適的操控與字符串,擴展Underscore.js在prototype.js中,Right.js,下劃線和美麗的Ruby語言的啓發。 Underscore.string爲您提供了幾個有用的功能:大寫,清理,包含,計數,轉義HTML,unescapeHTML,插入,拼接,startsWith,endsWith,titleize,trim,truncate等等。

相關問題