剑指 offer 字符串算法题:Hex颜色值转rgb

该文章介绍了一个JavaScript函数,用于将以#开头的六位或三位16进制(hex)颜色值转换为rgb()格式。函数首先通过正则表达式验证输入,然后解析颜色值并计算RGB分量。

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

题目描述:hex颜色值时一个以#开头,后面跟着6位或3位16进制数字的字符串。写一个函数将hex颜色值转换为rgb()形式的颜色值。 给的字符串不合法,则返回原始字符串。

分析:首先使用正则判断是否时一个hex颜色值,如果不是直接返回,否则使用 parseInt(str, radix = 16)计算 # 后面值存放在数组中,根据数组长度是3或6计算rgb值即可。

求解:

function hex2rgb(hex: string): string {
  const reg = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/;
  if (!reg.test(hex)) {
    return hex;
  }
  let red = 0;
  let green = 0;
  let blue = 0;
  let h = hex.substring(1);
  if (h.length === 3) h = [...h].map((x) => x + x).join('');
  const hexValues = h.split('').map((item) => {
    return parseInt(item, 16);
  });
  red = hexValues[0] * 16 + hexValues[1];
  green = hexValues[2] * 16 + hexValues[3];
  blue = hexValues[4] * 16 + hexValues[5];
  return `rgb(${red}, ${green}, ${blue})`;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

薛定谔的猫96

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值