我正在从Android应用程序中的Firebase控制台获取数据。我试图在我的应用程序中接受该值之前,先验证该值是否等于任何可接受的颜色,以避免在Java中输入错误数据(例如fff而不是颜色的#fff)时发生崩溃。 有没有一种方法可以验证Java中的颜色值。
答案 0 :(得分:3)
使用Color#parseColor方法。
解析颜色字符串并返回相应的color-int。如果无法解析该字符串,则抛出IllegalArgumentException异常。
支持的格式为: -#RRGGBB -#AARRGGBB
以下名称也可以接受:红色,蓝色,绿色,黑色,白色,灰色,青色,洋红色,黄色,浅灰色,深灰色,灰色,浅灰色,深灰色,水色,紫红色,石灰,栗色,海军,橄榄色,紫色,银色和蓝绿色。
该方法由android中的Color
类提供。
相反,您可以尝试以下模式来分析其是否有效:
#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})
java中的模式用法:
Pattern pattern = Pattern.compile("#([0-9a-f]{3}|[0-9a-f]{6}|[0-9a-f]{8})");
Matcher matcher = pattern.matcher(input);
if (matcher.matches() {
//todo do something it is valid
}
Color#parseColor
方法的使用
try {
Color color = Color.parseColor(myColorString);
// color is a valid color
} catch (IllegalArgumentException ex) {
// This color string is not valid
}
答案 1 :(得分:1)
您可以使用正则表达式来执行此操作,在这种情况下,您需要使用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();