假设我有一个以这种格式声明的点的列表:x1,y1 x2,y2
listOfPoints : string = "12.2, 13.0 198.2, 141";
例如,该字符串的每个数字如何乘以1.5?
我是否需要遍历listOfPoints并在每次有','或''时提取一个字符串,将该字符串转换为数字,将其乘以1.5,然后将其转换为字符串,最后将其放入新字符串中(newListOfPoints)?
还是有另一种方法可以更有效地做到这一点?
谢谢。
最佳答案
使用带有替换功能的正则表达式来匹配数字(可能与小数)匹配,并用这些数字乘以所需的数字来替换:
const listOfPoints = "12.2, 13.0 198.2, 141";
const multiplied = listOfPoints.replace(
/\d+(?:\.\d+)?/g,
match => match * 1.5
);
console.log(multiplied);
由于浮点问题,某些结果数字可能带有尾随数字。如果不希望这样,可以将乘数四舍五入到小数点后一位:
const listOfPoints = "12.2, 13.0 198.2, 141";
const multiplied = listOfPoints.replace(
/\d+(?:\.\d+)?/g,
match => Math.round(1000 * match * 1.5) / 1000
);
console.log(multiplied);