29

我想将来自 HTML CSS 的三位十六进制颜色转换为 Flex 的六位十六进制颜色。谁能给我代码将 3 位十六进制颜色转换为 6 位等效值?

4

6 回答 6

49

通过将每个数字加倍来扩展三位十六进制颜色(参见w3 规范)。所以#F3A扩展为#FF33AA.

于 2012-04-19T14:52:01.537 回答
9

将每个数字加倍:例如#A21等于#AA2211

但是这个问题是重复的:转换为 3-digit hex color code

于 2012-04-19T14:48:18.957 回答
8

其他答案提供了该过程,但我将使用正则表达式和 java 编程语言提供代码

String value = "#FFF";
value = value.replaceAll("#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])", "#$1$1$2$2$3$3");
于 2019-02-08T14:52:32.777 回答
1

如果您来到这里并使用 Python,请执行以下操作:

hex_code = '#FFF'
new_hex_code = '#{}'.format(''.join(2 * c for c in hex_code.lstrip('#')))
于 2019-04-11T00:16:22.527 回答
1

Kotlin 版本的 Ovokerie 的回答:

shortHexString.replace(Regex("#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])"), "#$1$1$2$2$3$3")
于 2020-07-27T16:12:20.577 回答
1

PHP版本:

  /**
 * returns a clean 6 digit hex number as a string
 * @param $hex
 * @return false|string
 */
function clean_hex_color($hex)
{
    $hex = strtolower($hex);
    //remove the leading "#"
    if (strlen($hex) == 7 || strlen($hex) == 4)
        $hex = substr($hex, -(strlen($hex) - 1));

    // $hex like "1a7"
    if (preg_match('/^[a-f0-9]{6}$/i', $hex))
        return $hex;
    // $hex like "162a7b"
    elseif (preg_match('/^[a-f0-9]{3}$/i', $hex))
        return $hex[0] . $hex[0] . $hex[1] . $hex[1] . $hex[2] . $hex[2];
    //any other format
    else
        return "000000";
}
于 2021-05-28T18:59:18.367 回答