DebanjanB:
変換する方法#ffffff
に#fff
か#fff
に#ffffff
アサーションのために?
私が使用していますgetCssValue("background")
から、セレン戻りrgb(255, 255, 255)
、私はに分けることができます。
- R - >
255
- グラム - >
255
- B - >
255
次のコード行:
String hex = String.format("#%02x%02x%02x", r, g, b);
変換は、RGBに進として出力が得られます。
#ffffff
しかしコンソールから、背景がとして抽出されます#fff
理想的な方法のいずれかにすることができるかそう。
- 変換
#ffffff
へ#fff
- 変換
#fff
へ#ffffff
私は、関連する議論のカップルをしてきました:
- なぜ体に色#FFF使用?その問題はやや主観的であることを言及しています。
- CSS:高速ブラウザのためにありますか?色:#FFF; または色:#FFFFFF; これはCSSのコンプレッサーは、インテリジェント#FFFバージョンに最適化されます言及。
しかし、私のテストが失敗していると、変換の必要性があります。任意の勧告?
TJクラウダー:
あなたが使用できるreplaceAll
正規表現とそのすべての3つの部分が同じ数字を使用する場合のルックス:
static String getHex(int r, int g, int b) {
return String.format("#%02x%02x%02x", r, g, b).replaceAll("^#([a-fA-F])\\1([a-fA-F])\\2([a-fA-F])\\3$", "#$1$2$3");
}
始まる文字列を検索しますが、その#
マッチング進数字の3組が続き、わずかのフォームに置き換えます。(私はちょうど使用している可能性が想定[a-f]
代わりに[a-fA-F]
、あなたの中の特定の ...あなたが唯一の下部ケースを取得することがあります知っているので、たとえば、しかし)
(上の完全な例Ideone):
public class Example {
public static void main(String[] args) {
System.out.println(getHex(255, 255, 255)); // #fff
System.out.println(getHex(255, 240, 255)); // #fff0ff
}
static String getHex(int r, int g, int b) {
return String.format("#%02x%02x%02x", r, g, b).replaceAll("^#([a-fA-F])\\1([a-fA-F])\\2([a-fA-F])\\3$", "#$1$2$3");
}
}