Умножить точки строки - PullRequest
0 голосов
/ 04 ноября 2019

Допустим, у меня есть список точек, объявленных в этом формате: x1, y1 x2, y2

listOfPoints : string = "12.2, 13.0 198.2, 141";

Что я могу сделать, чтобы умножить на 1,5, например, каждое число этой строки? Нужно ли перебирать listOfPoints и извлекать строку каждый раз, когда есть ',' или '', конвертировать эту строку в число, умножать ее на 1,5 и преобразовывать в строку, чтобы наконец поместить ее в новую строку(newListOfPoints)?

Или есть более эффективный путь к этому?

Спасибо.

1 Ответ

1 голос
/ 04 ноября 2019

Используйте регулярное выражение с функцией заменителя для сопоставления цифр, возможно, с десятичными, и замените их на цифры, умноженные на желаемое число:

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);
...