如何将3位数字的HTML十六进制颜色转换为6位数字的flex十六进制颜色。

34

我想将来自HTML CSS的3位十六进制颜色转换为Flex的6位十六进制颜色。有人能给我代码,将3位十六进制颜色转换为它们的6位等效颜色吗?


1
可能是转换为3位十六进制颜色代码的重复问题。 - Massimiliano Kraus
6个回答

55

三位十六进制颜色会通过将每个数字加倍来扩展(请参见w3规范)。因此,#F3A会被扩展为#FF33AA


11

9

其他答案提供了过程,但我将使用正则表达式和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");

感谢,已经在Android/Java上运行。 - ashishdhiman2007
谢谢,也在VSCode的正则表达式查找替换中起作用。 - AamirR

1
如果您来到这里并使用Python,以下是方法:

hex_code = '#FFF'
new_hex_code = '#{}'.format(''.join(2 * c for c in hex_code.lstrip('#')))

1

Ovokerie的答案的Kotlin版本:

shortHexString.replace(Regex("#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])"), "#$1$1$2$2$3$3")

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";
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接