【发布时间】:2017-01-18 20:02:00
【问题描述】:
主要问题是如何更新字符串中的所有数字?
我要更新字符串中数字的示例:
-ms-transform: rotate(7deg);margin: 10px 20px 30px 40px;Value10isMoreThan5
所以每个数字“块”都应该单独处理(例如10或1 0或1px2,无论数字段之间是空格还是字符)。
当我使用空格分割字符串时,我得到了这个工作,但在字符串没有空格rotate(7deg) 的情况下它不起作用。这是一小段“意大利面条代码”示例。
// Basic lerp
function lerp (min, max, amount) {
return min + amount * (max - min);
}
// Lerp values in string
function lerpAllNumbers (a, b, amount) {
var aNumbers = separateNumbers(a);
var bNumbers = separateNumbers(b);
var returnValue = null;
if (aNumbers.length === bNumbers.length) {
for (var i = 0; i < aNumbers.length; i++) {
var searchString = aNumbers[i].value + aNumbers[i].extension;
var newValue = lerp(aNumbers[i].value, bNumbers[i].value, amount).toFixed(3) + aNumbers[i].extension;
returnValue = a.toString().replace(searchString, newValue);
}
return returnValue;
}
}
// Separate numbers from string and create object with value and extension
function separateNumbers(text) {
var splitter = text.toString().split(" ");
var returnArray = [];
splitter.forEach(function(item){
var numberObj = {
value: parseFloat(item),
extension: item.replace(/^-?\d+((.|,)\d+)?/g, '')
}
returnArray.push(numberObj);
});
return returnArray;
}
如有重复,请见谅。我已经找到了这样一个有用的帖子:regex to split number from string
但在这种情况下,我需要更新多个数字并在更新后将它们放回正确位置的字符串。
是否有更智能/更简单的方法来使用 JavaScript(Vanilla 或 jQuery)更新字符串中的所有数字?
【问题讨论】:
-
我想你会想要使用
.replace()与正则表达式模式和自定义替换功能。此处的文档:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
标签: javascript jquery string numbers