如何检查String是android中有效的十六进制颜色代码

时间:2014-04-18 14:04:44

标签: java android


我有一个字符串,我需要验证它是否是有效的十六进制颜色代码。 我的示例字符串如下:

  

1 - #ff00000

     

2 - #ff347820

如何验证上述字符串以检查它们是否是有效的十六进制颜色代码。
任何人都可以帮我解决这个问题吗?


提前致谢

3 个答案:

答案 0 :(得分:15)

独立于支持未来格式的正确Android测试方法是依赖Color类。

像这样:

try {
    Color color = Color.parseColor(myColorString);
    // color is a valid color
} catch (IllegalArgumentException iae) {
    // This color string is not valid
}

作为奖励,它还支持命名颜色,例如magentablue ......

主要的正则表达式匹配是语义。此代码显式测试myColorString String作为Color。你几乎不需要任何评论来说明它是什么。

答案 1 :(得分:10)

您可以使用正则表达式来执行此操作,在这种情况下,您需要Pattern类:

Pattern colorPattern = Pattern.compile("#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})");
Matcher m = colorPattern.matcher(yourInputString);
boolean isColor = m.matches();

答案 2 :(得分:2)

package com.javacodegeeks.java.core;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class HexColorValidator {

private Pattern pattern;
private Matcher matcher;

private static final String HEX_PATTERN = "^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$";

public HexColorValidator() {
    pattern = Pattern.compile(HEX_PATTERN);
}

public boolean validate(final String hexColorCode) {

    matcher = pattern.matcher(hexColorCode);
    return matcher.matches();

}
}

来自http://examples.javacodegeeks.com/core-java/util/regex/matcher/how-to-validate-hex-color-code-with-regular-expression/的代码