如何验证输入的值是一种颜色

时间:2018-07-17 13:17:38

标签: java android

我正在从Android应用程序中的Firebase控制台获取数据。我试图在我的应用程序中接受该值之前,先验证该值是否等于任何可接受的颜色,以避免在Java中输入错误数据(例如fff而不是颜色的#fff)时发生崩溃。 有没有一种方法可以验证Java中的颜色值。

2 个答案:

答案 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();