最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 前端学习之编程题系列:(五)颜色字符串转换

    正文概述 掘金(Crystal_Wei)   2021-02-12   575

    写在前面

    本题目来自牛客网,已经成功通过测试。笔者刚刚开始学习前端,准备在掘金记录下自己的学习过程,欢迎和我一样准备入门前端的小伙伴们一起交流学习,也欢迎各位大佬批评指正~~~

    题目描述

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

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

    示例

    输入

    'rgb(255, 255, 255)'
    

    输出

    #ffffff
    

    题解

    function rgb2hex(sRGB) {
       let rgbArray = sRGB.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/)
       if(!rgbArray){
           return sRGB
       }else{
           let res = "#"
           //了解match匹配到的数组结构,这里i从1开始,不是0
           for(let i = 1; i <= 3; i++){
               let num = parseInt(rgbArray[i])
               if(num >= 0 && num <= 255){  
                   //小于16时,前面要补零
                   res += num < 16? "0" + num.toString(16) : num.toString(16)
               }else{
                   return sRGB
               }
           }
           return res
       }  
    }
    

    知识点

    1. 正则表达式的匹配

      stringObject.match(regexp) 方法返回的是一个数组,该数组的第 0 个元素存放的是匹配文本,而其余的元素存放的是与正则表达式的子表达式匹配的文本。

      示例:

      let sRGB = 'rgb(12,46,255)'
      let sArray = sRGB.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/)
      console.log(sArray);
      //打印结果
      Array(4)
      0: "rgb(12,46,255)"
      1: "12"
      2: "46"
      3: "255"
      groups: undefined
      index: 0
      input: "rgb(12,46,255)"
      length: 4
      __proto__: Array(0)
      
    2. 数字和字符串之间的转换parseInt(string, radix)NumberObject.toString(radix)

      • radix默认是10,按照十进制进行解析
    3. 边界问题


    起源地下载网 » 前端学习之编程题系列:(五)颜色字符串转换

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元