javascript编程,实现将 rgb 颜色字符串转换为十六进制的形式

本文介绍如何使用JavaScript编程将rgb颜色字符串转换为十六进制形式,包括处理不同数量的空格和异常情况。例如,'rgb(255, 255, 255)'将转换为'#ffffff'。测试用例涵盖了有效和无效的输入,确保函数正确工作。" 112141570,10543444,Verilog HDLBits实战:4位加法器到时序逻辑,"['Verilog', '数字逻辑', '电路设计', 'HDL']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要求:
将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff

  1. rgb 中每个 , 后面的空格数量不固定
  2. 十六进制表达式使用六位小写字母
  3. 如果输入不符合 rgb 格式,返回原始输入

测试用例:
rgb2hex("rgb(255, 255, 255) ") //#ffffff
rgb2hex("rgb(100, 0, 255) ") //#6400ff
异常测试用例
rgb2hex("rgb(100 ") //rgb(100
rgb2hex("rgb(100, 0, 999) ") //rgb(100,0,999)

代码实现:

function rgb2hex(sRGB = "") {
  sRGB = sRGB.replace(/ /g, ""); //  去掉多余空格

  // 正则表达式,使用(),
  // 当调用string.match方法是,数组1/2/3分别对应匹配值
  let reg = /^rgb\((\d{1,3}),(\d{1,3}),(\d{1,3})\)$/i;
  let match = sRGB.match(reg);
  if (!match) return sRGB;  // 非法,直接返回

  let numList = [];
  for (let i = 1; i < 4; i++) {
    let num = parseInt(match[i]);
    if (num > 255) return sRGB;   // >255,非法,直接返回
    numList.push(num);
  }

  let ret = numList.reduce(function (pre, cur) {
    let nCur = cur.toString(16);
    if (nCur.length === 1) nCur = "0" + nCur;

    return pre + nCur;
  }, "#");
  return ret;
}

console.log(rgb2hex("rgb(255, 255, 255) "));  //#ffffff
console.log(rgb2hex("rgb(100, 0, 255) "));    //#6400ff
console.log(rgb2hex("rgb(100 "));             //rgb(100
console.log(rgb2hex("rgb(100, 0, 999) "));    //rgb(100,0,999)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值