你能用Jquery处理字符串中的数字吗

Can you manipulate a number within a string with Jquery?

本文关键字:数字 字符串 处理 Jquery      更新时间:2023-09-26

我有一些字符串,比如:

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

等等

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


附加说明:

  1. 不,数字可以在字符串中的任何位置
  2. @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; }));
});

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

示例:

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/

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