セレンgetCssValueによって返された背景色のRGB(255,255,255)をアサートしながら、どのように#FFFFFFに#FFFまたは#FFFに#FFFFFF変換する(「バックグラウンド」)

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

FFF

理想的な方法のいずれかにすることができるかそう。

  • 変換#ffffff#fff
  • 変換#fff#ffffff

私は、関連する議論のカップルをしてきました:

しかし、私のテストが失敗していると、変換の必要性があります。任意の勧告?

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

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=199805&siteId=1