【问题标题】:Converting "rgb(255, 255, 255)" format to rgb将 "rgb(255, 255, 255)" 格式转换为 rgb
【发布时间】:2015-01-15 11:36:44
【问题描述】:

我想知道如何将“rgb(255, 255, 255)”字符串格式转换为rgb,例如:

var rgb = convert("rgb(255, 255, 255)");

并像这样使用它:

this.r = rgb.r;
this.g = rgb.g;
this.b = rgb.b;

到目前为止我发现的是如何将 \from hex 转换为 rgb。

谢谢

【问题讨论】:

标签: javascript


【解决方案1】:

我能找到的更简单的方法:

var convert = function(rgb)
{    
    var s = rgb.replace(/[^\d\s]/g, '').split(' ');

    return {
        r: s[0],
        g: s[1],
        b: s[2]
    };
}

console.log(convert("rgb(255, 255, 255)"));

Fiddle。

这不会转换任何东西。只是提取字符串的信息并放入一个对象中。

更新:

对于@minmaxavg 的建议,要使其与百分比值一起使用,只需对正则表达式稍作更改即可:

/[^\d\s%]/g

【讨论】:

  • getComputedStyles 似乎是一种更好的方法,因为这会返回 incorrect 类似 rgb(50%, 50%, 50%) 的结果
  • @minmaxavg 这取决于。我从头顶上直接回答了OP的示例。您的回答很好,但远远超出了 OP 的要求,而且性能要差得多。无论如何,复制和粘贴别人的答案(即使给出其来源)也不好。
  • @minmaxavg 顺便说一句,使用这个正则表达式 /[^\d\s%]/g 可以达到你的建议,谢谢你的点。
  • 不客气。好的,我不会再复制其他问题的答案了。对不起..:(
【解决方案2】:

您可以使用简单的正则表达式来计算rgb({number}, {number}, {number}):

function convertRgb(rgb) {
    // results contains e.g. ["rgb(255, 255, 255)", "255", "255", "255"]
    var results = /^rgb\((\d{1,3}), (\d{1,3}), (\d{1,3})\)$/.exec(rgb);
    return {
        r: results[1],
        g: results[2],
        b: results[3],
    };
}

var rgb = convertRgb("rgb(255, 255, 255)");
console.dir(rgb);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 2019-07-12
    • 2011-03-02
    • 2018-03-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多