Hex Pair to Hex Shorthand - PullRequest
       22

Hex Pair to Hex Shorthand

0 голосов
/ 04 июня 2010

У меня есть куча Color объектов (.Net). Я хочу преобразовать их в Hex, который достаточно прост с чем-то вроде:

Dim clr As Color = Color.FromArgb(255, 0, 0)
Dim clrString = ColorTranslator.ToHtml(clr)

Есть ли способ в .Net или через RegEx (или каким-либо другим способом), который я могу определить, доступна ли шестнадцатеричное сокращение (например, #F00) для указанного Color, а затем преобразовать его в это? Поэтому для цветов, которые могут иметь шестнадцатеричное сокращение, конвертируйте в него, в противном случае конвертируйте в шестнадцатеричную пару #FF0000.

Ответы [ 2 ]

3 голосов
/ 04 июня 2010
^#([0-9A-F])\1([0-9A-F])\2([0-9A-F])\3$

При этом используются 3 обратных ссылки для проверки того, что за каждой шестнадцатеричной цифрой следует копия. Так что все с шаблоном #xxyyzz (который может быть преобразован в #xyz) совпадает.

1 голос
/ 04 июня 2010

Эта ссылка описывает, как работает сокращенная шестнадцатеричная запись.

Сокращенная шестнадцатеричная запись

Таким образом, теоретически любая реализация, которая позволит вам анализировать шестнадцатеричное значение RGB и выявлять «двойные двойные» символьные значения, должна иметь возможность уменьшить его до шестнадцатеричного сокращения.

Приветствия

...