javascript - 使用 JavaScript 更新字符串中的所有数字?

标签 javascript jquery string numbers

主要问题是如何更新字符串中的所有数字?

我想要更新字符串中的数字的示例:

  • -ms-transform: 旋转(7deg);
  • 边距:10px 20px 30px 40px;
  • 值10大于5

因此,每个数字“ block ”都应单独处理(例如 101 01px2,无论是空格还是数字段之间的字符)。

当我使用空格分割字符串时,我得到了这个工作,但在字符串没有空格的情况下它不起作用旋转(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)更新字符串中的所有数字?

最佳答案

您需要使用 String#replace使用匿名回调方法:

// Basic lerp
function lerp (min, max, amount) {
    return Number(min + amount * (max - min));
}

var s = "-ms-transform: rotate(7deg);";
var max = 15, amount = 2;
console.log(
  s.replace(/-?\d*[,.]?\d+/g, function(m) {
    return lerp(Number(m), max, amount).toFixed(3);
  })
);

模式为 /-?\d*[,.]?\d+/g 匹配可选减号的多次出现,0+ 数字后跟 ,.,然后是 1+ 位数字。

function(m){} 是作为替换参数传递给 String#replace 方法的匿名回调方法,其中值可以传递给其他方法。

关于javascript - 使用 JavaScript 更新字符串中的所有数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41728430/

相关文章:

jquery - 检查文本框是否为空然后运行代码

javascript - 难以使用 Javascript 切换媒体查询

javascript - 在javascript中为对象设置变量

jquery - 如何剪辑文本溢出 Bootstrap 下拉按钮

c++ - 从 QT 复选框到 Postgresql 的星期选择

c++ - 如何将字符串迭代器变量传递给C++中的函数?

java - 如何加快List的迭代速度

javascript - Visual Studio 代码 IntelliSense 不适用于 NodeJS

javascript - 单击按钮时函数不调用 ajax 请求

javascript - 下拉框的自定义 CSS