【C022240】将 rgb 颜色字符串转换为十六进制的形式,如 rgb(255, 255, 255) 转为 #ffffff
1. rgb 中每个 , 后面的空格数量不固定
2. 十六进制表达式使用六位小写字母
3. 如果输入不符合 rgb 格式,返回原始输入
输入例子:
rgb2hex('rgb(255, 255, 255)')
输出例子:
#ffffff
三又木 1楼
<s cript type="text/javas cript"> //创建转换函数 var rgb2hex = function(rgb){ var arr = rgb.split(','); var result = '#'; //遍历用split后的数组,提取数字后,对每一项进行16进制转化 for(var i=0 ; i<arr.length ; i++){ var patt = /d/g ; var hex = ''; var num = arr[i].match(patt); for(var j=0 ; j<num.length ; j++){ hex += num[j]; } hex = parseInt(hex).toString(16); result += hex; } return result; } var rgb = 'rgb(255,255, 255)'; var result = rgb2hex(rgb); console.log(result) </s cript>
新手回帖请指正~~
时尚码头 2楼
rgb2hex('rgb(255, 255 , 255)'); //#ffffff
rgb2hex('rgb(0,0,0)'); // #000000
rgb2hex('rgb(15,16,0)'); //#0f1000
function rgb2hex(rgb){
// 提取rgb参数到数组
var arr = rgb.slice(4,rgb.length-1).split(',');
if(arr.length !== 3){
return rgb;
}
var hex = '#';
for(var i = 0; i < arr.length; i++){
arr[i] = arr[i].trim();
if(!isInteger(arr[i]) || !isHex(arr[i])){
return rgb;
}
hex += toDouble(arr[i]);
}
return hex.toLowerCase();
}
// 判断是否是整数
function isInteger(str){
return str%1 === 0?true:false;
}
// 判断是否是16进制
function isHex(num){
return (num >= 0 && num <= 255);
}
// 补位
function toDouble(num){
num = parseInt(num);
if(num <= 15){
return 0+num.toString(16);
}
return num.toString(16);
}