Javascript 将字符串修剪到小数点后两位

Javascript 将字符串修剪到小数点后两位,javascript,string,rgb,trim,Javascript,String,Rgb,Trim,我有这样一个字符串:rgba(244.235,3.234,3.236,0.84839234) 如何将最后一个数字的字符串修剪到小数点后两位(0.84),并删除其他数字小数点后的所有内容 例如: rgba(244.235, 3.234, 3.236, 0.84839234) var newString = `rgba(${Math.floor(numbers[0])}, ${Math.floor(numbers[1])}, ${Math.floor(numbers[2])}, ${numbers

我有这样一个字符串:
rgba(244.235,3.234,3.236,0.84839234)

如何将最后一个数字的字符串修剪到小数点后两位(
0.84
),并删除其他数字小数点后的所有内容

例如:

rgba(244.235, 3.234, 3.236, 0.84839234)
var newString = `rgba(${Math.floor(numbers[0])}, ${Math.floor(numbers[1])}, ${Math.floor(numbers[2])}, ${numbers[3].toFixed(2)})`
应该是:

rgba(244, 3, 3, 0.84)

可以使用正则表达式查找所需的数字,然后重新构造字符串:

function convert(inputStr) {
  const groups = inputStr.match(/\((?<r>[\d]*).*, ?(?<g>[\d]*).*, ?(?<b>[\d]*).*, ?(?<a>[\d]*\.?\d{0,2}).*\)/).groups;
  return `rgba(${groups.r}, ${groups.g}, ${groups.b}, ${groups.a})`;
}
// Function call
convert("rgba(244.235, 3.234, 3.236, 0.84839234)");
函数转换(inputStr){
常量组=输入字符串匹配(/\((?[\d]*)。、(?[\d]*)。、(?[\d]*)。、(?[\d]*)。、(?[\d]*\.?\d{0,2})。*\)/)组;
返回`rgba(${groups.r},${groups.g},${groups.b},${groups.a})`;
}
//函数调用
转换(“rgba(244.235,3.234,3.236,0.84839234)”;

您可以执行以下操作:

var string = "rgba(244.235, 3.234, 3.236, 0.84839234)";
var numbers = string.match(/([0-9]*[.])?[0-9]+/g).map(Number); 
然后在
numbers
数组中,您将拥有这些数字,并且可以对它们执行任何操作。首先做一些操作,然后把它们放在你想要的字符串中

例如:

rgba(244.235, 3.234, 3.236, 0.84839234)
var newString = `rgba(${Math.floor(numbers[0])}, ${Math.floor(numbers[1])}, ${Math.floor(numbers[2])}, ${numbers[3].toFixed(2)})`

我希望这能有所帮助。

如果您想尝试不使用regex,那么

const string = "rgba(244.235, 3.234, 3.236, 0.84839234)";
const rgbaValues = string.substring(string.indexOf('(') + 1, string.length - 1).split(",");
const returnString = `rgba(${parseInt(rgbaValues[0])}, ${parseInt(rgbaValues[1])}, ${parseInt(rgbaValues[2])}, ${parseFloat(rgbaValues[3]).toFixed(2)})`;
console.log(returnString);

要修剪几个小数,请使用。e、 g

Math.PI;
//=> 3.141592653589793
Math.PI.toFixed(2)
//=> "3.14"
要替换字符串的某些部分,请使用。e、 g

const reverse\u cc=str=>
str.replace(/(\d+)-(\d+)-(\d+)-(\d+)/g,
(忽略,x1,x2,x3,x4)=>
`${x4}-${x3}-${x2}-${x1}`);
反向抄送(“嘿,这是我的信用卡号码:1234-2345-3456-4567”);
//=>“嘿,这是我的信用卡号码:4567-3456-2345-1234”
有了这些知识,我们可以构建一个函数来提取
rgba(…)
字符串中的数字,处理这些数字并返回一个新字符串:

const rgba_fix=str=>
str.replace(/rgba\(\s*(.*?)\s*,\s*(.*?\s*,\s*(.*?)\s*,\s*(.*?\s*)/,
(忽略,x1,x2,x3,x4)=>
数组(
[数学四舍五入(数字(x1))
,数学四舍五入(数字(x2))
,数学四舍五入(数字(x3))
,编号(x4)。固定(2)
])
.map(xs=>`rgba(${xs.join(',')})`)
[0]);
rgba_fix(“rgba(244.235,3.234,3.236,0.84839234)”;
//=>“rgba(244,3,3,0.85)”

您不想/不需要将数字“四舍五入”吗?e、 g.
0.84839234
~>
0.85
只是好奇:为什么
Math.floor
over
Math.round