2011-01-28 52 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-来分别放置信息。