2011-01-28 51 views
0

我有一段我的網站,我使用複選框來顯示隱藏信息div onclick。 我需要能夠切換繼續按鈕以及隱藏的div(顯示/隱藏)或(切換),同時收集字符串前面的2位數字,以便在添加到購物車時用作ID。我想也許與reg exp jquery split()函數。我怎樣才能分割一個像45frank這樣的字符串,所以它會像id = 45和val = frank。如何使用Jquery將像45frank這樣的字符串拆分爲

+0

會更好地分割像「45_frank」的id,更容易解析後者。 – yoda 2011-01-28 16:18:06

+0

不幸的是,我正在使用現有的系統,並且已經設置了變量,我會使用45_frank格式,這就是我問這個問題的原因。感謝您的快速響應 – 2011-01-28 18:09:11

回答

7
var str = "45frank"; 

var parts = str.match(/(\d+)(\D+)/).slice(1); 

這裏假設第二部分不包含任何數字。

它返回一個數組:

["45", "frank"] 

如果有可能的是,第二部分可能有很多,你可以這樣做,而不是:

var str = "45fr9ank"; 

var parts = str.match(/(\d+)(\D.+)/).slice(1); 

導致:

["45", "fr9ank"] 

然後只需添加你想要的文字:

parts[0] = "id=" + parts[0] 
parts[1] = "val=" + parts[1] 

或者,如果你想要一個字符串結果(我不能從問題告訴),你可以這樣做:

var str = "45fr9ank"; 

str = str.replace(/(\d+)(\D.+)/,function(str,s1,s2){ 
      return "id=" + s1 + " val=" + s2; 
}); 

結果:

"id=45 val=fr9ank" 
+1

+1有關替換中的回調函數的示例。我沒有意識到這種可能性。 – mhitza 2011-01-28 16:29:48

0
var id = string.slice(0,2); 
var val = string.substr(2); 

這裏沒有理由使用jQuery或正則表達式。這隻適用於數字總是兩位數的情況。

如果您忘記它爲「45#弗蘭克」,那麼你可以使用像

var id = string.split("#")[0]; 
var val = string.split("#")[1]; 
0

我儘量不使用REG EXP經常性能損失,因爲。如果你的字符串的格式是2位數字然後是一串字符。您可以嘗試以數組的形式訪問該字符串。不幸的是IE不支持這一點。但我有一個工作,基本上將字符串轉換爲數組訪問前兩位數字並撤消它。只需使用JavaScript內置函數,我相信它是.split()。不幸的是,我現在沒有我的代碼。

但你基本上將字符串轉換爲數組。訪問數字的[0]和[1]。從[2]到...字符串長度減1將是您的字符串。您可以使用另一個內置的JavaScript函數將數組轉換回字符串。這種瘋狂的原因是因爲IE不支持像數組一樣訪問字符串。

這就是我做到的。或者只是使用HTML5自定義屬性data-來分別放置信息。