如何使用Jquery分割像45frank这样的字符串

时间:2011-01-28 16:14:43

标签: php jquery regex

我有一个网站的部分,我使用复选框显示隐藏信息divs onclick。 我需要能够切换一个继续按钮以及隐藏的div(显示/隐藏)或(切换),同时收集字符串前面的2位数字,以便在添加到购物车时用作ID。我想也许是使用reg exp的jquery split()函数。我如何分割像45frank这样的字符串,所以它会像id = 45和val = frank。

3 个答案:

答案 0 :(得分: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 :(得分:0)

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

这里没有理由使用jQuery或正则表达式。仅当数字始终为两位数时才有效。

如果你把它忘记为" 45#Frank"然后你可以使用像

这样的东西
var id = string.split("#")[0];
var val = string.split("#")[1];

答案 2 :(得分:0)

由于性能受到影响,我尝试不经常使用reg exp。如果您的字符串格式为2位数字,则为一堆字符。您可以尝试以字符串形式访问该字符串。不幸的是,IE不支持这一点。但我有一个工作,基本上将字符串转换为数组访问前两位数并撤消它。只需使用javascript内置函数,我相信它是.split()。不幸的是我现在没有代码。

但你基本上将字符串转换为数组。访问[0]和[1]数字。从[2]到...字符串长度减去1就是你的字符串。您可以使用其他内置函数的javascript将数组转换回字符串。这种疯狂的原因是因为IE不支持像数组一样访问字符串。

我就是这样做的。或者只使用HTML5自定义属性data-来单独放置信息。