我有一些像这样的字符串:
<p>It will vary from 100g to 200g</p>
<p>2lbs of meat</p>
<p>3 piles of timber</p>
等等等等
我想增加/减少每个字符串中的所有数字。 有什么指点吗?
<小时/>附加说明:
- 不,数字可以位于字符串中的任意位置。
- @cookie_monster 我想看看是否可以不进行常规操作。
最佳答案
一个简单的解决方案是使用 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; }));
});
关于javascript - 你能用 Jquery 操作字符串中的数字吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23137015/