我使用 C# 和 ASP.NET 4 WebControls。
我的页面上有一个文本框,用户可以输入十六进制格式 (ff0000) 或 HTML 格式(“红色”)的 HTML 颜色。
我最初的想法是编写一个能够验证用户输入的 RegEx 太难了,所以我想出了一个想法来编写一个简单的方法来检查输入的颜色是否可以转换为要使用的有效颜色System.Drawing 的上下文。
在我的代码下面。它返回一个 Bool 数据类型,说明操作是否成功。 它现在工作正常,但我想知道:
- 我的方法写得好吗?
- 您知道更好的方法吗?
感谢您的考虑。
using SD = System.Drawing;
protected static bool CheckValidFormatHtmlColor(string inputColor)
{
try
{
SD.Color myColor = SD.ColorTranslator.FromHtml(inputColor);
return true;
}
catch (Exception ex)
{
return false;
}
}
最佳答案
异常处理很繁重,应该作为最后的手段使用,并且只用于实际的异常。尝试这个。它检查有效的 html 十六进制颜色,然后尝试命名颜色。
protected static bool CheckValidFormatHtmlColor(string inputColor)
{
//regex from http://stackoverflow.com/a/1636354/2343
if (Regex.Match(inputColor, "^#(?:[0-9a-fA-F]{3}){1,2}$").Success)
return true;
var result = System.Drawing.Color.FromName(inputColor);
return result.IsKnownColor;
}
关于c# - 您最喜欢用什么方法来检查 HTML COLOR 是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5563763/