Javascript 您可以使用Jquery操作字符串中的数字吗?

Javascript 您可以使用Jquery操作字符串中的数字吗?,javascript,jquery,string,numbers,Javascript,Jquery,String,Numbers,我有这样一些字符串: <p>It will vary from 100g to 200g</p> <p>2lbs of meat</p> <p>3 piles of timber</p> 它将从100g到200g不等 2磅肉 3堆木材 等等 我想递增/递减每个字符串中的所有数字。 有什么建议吗 附加说明: 不,数字可以在字符串中的任何位置 @cookie_monster我想看看如果不进行常规操作是否可行 一个简单的解决

我有这样一些字符串:

<p>It will vary from 100g to 200g</p>
<p>2lbs of meat</p>
<p>3 piles of timber</p>
它将从100g到200g不等

2磅肉

3堆木材

等等

我想递增/递减每个字符串中的所有数字。 有什么建议吗


附加说明:

  • 不,数字可以在字符串中的任何位置
  • @cookie_monster我想看看如果不进行常规操作是否可行

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

    "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; }));
    });
    

    是的,你可以,但要做到这一点,你需要给出跨度中的数字<代码>100g。
    然后,使用jQuery.text,您可以对数字进行递增、递减等操作。

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

    例如:

    var s = "There are 4 lights.";
    
    s = s.replace(/\d+/g, function(m){
        return parseInt(m, 10) + 1;
    });
    
    演示:

    要在多个元素上执行此操作,可以使用带有回调的
    text
    方法:

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

    演示:

    数字总是在开头吗?您可以从文本中提取数字值,将其转换为数字,对其进行操作,然后将其连接回。号码总是在开头吗?会不会有不止一个?弦是从哪里来的?它们在DOM中吗?你的一些HTML怎么样,这样我们可以把你推向正确的方向?嗨,布拉德利,我已经更新了帖子。什么是“通常的操作”?为了简单起见+1。为了狙击我,您需要对找到的值执行
    parseInt()
    ,因为除非您指定,否则JS喜欢将内容视为字符串it@Derek-注意
    +
    @derek:一元加号运算符在这里更有意义。@adeneo:我想他说的是十六进制语法。你的意思是
    100g
    。此外,元素中的文本仍然是文本,您需要将其解析为数字以对其进行算术运算。