我有一些像这样的字符串:
<p>It will vary from 100g to 200g</p>
<p>2lbs of meat</p>
<p>3 piles of timber</p>
等等
我想增加/减少每个字符串中的所有数字。 有什么指针吗?
附加说明:
答案 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;
});
要对多个元素执行此操作,您可以将text
方法与回调一起使用:
$('p').text(function(i, s){
return s.replace(/\d+/g, function(m){
return parseInt(m, 10) + 1;
});
});
答案 2 :(得分:0)
是的,你可以,但要做到这一点,你需要在跨度给出数字。 <span> 100g </span>
。
然后,使用jQuery .text,您可以递增,递减等数字。