你能用Jquery操作字符串中的数字吗?

时间:2014-04-17 15:16:58

标签: javascript jquery string numbers

我有一些像这样的字符串:

<p>It will vary from 100g to 200g</p>
<p>2lbs of meat</p>
<p>3 piles of timber</p>

等等

我想增加/减少每个字符串中的所有数字。 有什么指针吗?


附加说明:

  1. 不,数字可以是字符串中的任何位置。
  2. @cookie_monster我想看看没有通常的操作是否可行。

3 个答案:

答案 0 :(得分:9)

一个简单的解决方案是使用regular expression,例如:

"100g".replace(/\d+/g, function(n) { return +n + 1; }); // 101g

说明:

  • 模式\d+匹配字符串中一个或多个数字的任何序列。
    • 此模式仅限制您使用整数;如果您使用"3.5"尝试此操作,则会将其视为两个单独的整数,结果为"4.6"
    • 如果这是一个问题,请使用(\d+\.)?\d+之类的模式。
  • 模式上的全局标志(g)表示这将替换字符串中的所有数字序列。
    • 如果您只想替换第一个实例,请将其删除。
  • 该函数接受匹配的子字符串(在本例中为"100"),然后将其转换为数字(+n),加1,并返回结果。此结果将转换回字符串,并替换模式匹配的任何内容。

要使用jQuery在HTML元素中执行此操作,您可以使用以下内容:

$('p').each(function() {
    var e = $(this);
    e.text(e.text().replace(/\d+/g, function(n) { return +n + 1; }));
});

答案 1 :(得分:3)

您可以使用正则表达式匹配字符串中的数字,使用回调函数来解析数字并对其进行更改。

示例:

var s = "There are 4 lights.";

s = s.replace(/\d+/g, function(m){
    return parseInt(m, 10) + 1;
});

演示:http://jsfiddle.net/6YJQx/

要对多个元素执行此操作,您可以将text方法与回调一起使用:

$('p').text(function(i, s){
    return s.replace(/\d+/g, function(m){
        return parseInt(m, 10) + 1;
    });
});

演示:http://jsfiddle.net/6YJQx/1/

答案 2 :(得分:0)

是的,你可以,但要做到这一点,你需要在跨度给出数字。 <span> 100g </span>。 然后,使用jQuery .text,您可以递增,递减等数字。