簡體   English   中英

將字符串修剪為兩位小數

[英]Trim string to two decimal places

我有一個這樣的字符串: rgba(244.235, 3.234, 3.236, 0.84839234)

如何將最后一個數字的字符串修剪為兩位小數( 0.84 )並刪除其他數字的小數點后的所有內容?

例如:

rgba(244.235, 3.234, 3.236, 0.84839234)

應該:

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

你可以這樣做:

var string = "rgba(244.235, 3.234, 3.236, 0.84839234)";
var numbers = string.match(/([0-9]*[.])?[0-9]+/g).map(Number); 

然后在numbers數組中,您將擁有這些數字,您可以對它們做任何想做的事情。 首先進行操作,然后將它們連接到您想要的字符串中。

例如:

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

我希望這有幫助。

如果你想在沒有正則表達式的情況下嘗試,那么......

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

要修剪一些小數,請使用toFixed 例如

Math.PI;
//=> 3.141592653589793
Math.PI.toFixed(2)
//=> "3.14"

要替換字符串的一部分,請使用replace 例如

const reverse_cc = str =>
  str.replace(/(\d+)-(\d+)-(\d+)-(\d+)/g,
    (ignore, x1, x2, x3, x4) =>
      `${x4}-${x3}-${x2}-${x1}`);

reverse_cc("Hey this is my credit card number: 1234-2345-3456-4567");
//=> "Hey this is my credit card number: 4567-3456-2345-1234"

有了這些知識,我們可以構建一個函數來提取rgba(...)字符串中的數字,處理這些數字並返回一個新字符串:

const rgba_fix = str =>
  str.replace(/rgba\(\s*(.*?)\s*,\s*(.*?)\s*,\s*(.*?)\s*,\s*(.*?)\s*\)/,
    (ignore, x1, x2, x3, x4) =>
      Array.of(
        [ Math.round(Number(x1))
        , Math.round(Number(x2))
        , Math.round(Number(x3))
        , Number(x4).toFixed(2)
        ])
      .map(xs => `rgba(${xs.join(', ')})`)
      [0]);

rgba_fix('rgba(244.235, 3.234, 3.236 , 0.84839234)');
//=> "rgba(244, 3, 3, 0.85)"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM