【问题标题】:How to split a string like 45frank using Jquery如何使用 Jquery 拆分像 45frank 这样的字符串
【发布时间】:2011-01-28 16:14:43
【问题描述】:

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

【问题讨论】:

  • 最好像“45_frank”这样拆分id,后者更容易解析。
  • 不幸的是,我正在使用现有系统,并且已经设置了变量,我会使用 45_frank 格式,这就是我问这个问题的原因。感谢您的快速响应

标签: php jquery regex


【解决方案1】:
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 对于替换中带有回调函数的示例。我不知道这种可能性。
  • 感谢您的回复,正是我所需要的:)
  • 提到\D 是一个非数字。 \d 是一个数字是不言自明的。
【解决方案2】:
var id = string.slice(0,2);
var val = string.substr(2);

这里没有理由使用 jQuery 或正则表达式。这仅适用于数字始终为两位数的情况。

如果你忘记它是“45#Frank”,那么你可以使用类似的东西

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

【讨论】:

  • 感谢您的回复,但是数字部分是一个自动递增的数据库字段,因此它也可能增长到 3 位数字,您的回复对于我提供的有限信息是正确的。再次感谢
【解决方案3】:

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

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

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

【讨论】:

    猜你喜欢
    • 2017-08-05
    • 2013-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多