我有一个字符串,我需要验证它是否是有效的十六进制颜色代码。
我的示例字符串如下:
1 - #ff00000
2 - #ff347820
如何验证上述字符串以检查它们是否是有效的十六进制颜色代码。
任何人都可以帮我解决这个问题吗?
提前致谢
答案 0 :(得分:15)
独立于支持未来格式的正确Android测试方法是依赖Color
类。
像这样:
try {
Color color = Color.parseColor(myColorString);
// color is a valid color
} catch (IllegalArgumentException iae) {
// This color string is not valid
}
作为奖励,它还支持命名颜色,例如magenta
,blue
......
主要的正则表达式匹配是语义。此代码显式测试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();
}
}