有没有一种方法可以从名称中获取颜色,例如当程序读取白色时,它会显示 #FFFFFF hex [重复]

Posted

技术标签:

【中文标题】有没有一种方法可以从名称中获取颜色,例如当程序读取白色时,它会显示 #FFFFFF hex [重复]【英文标题】:is there is a way to get color from a name for example when the program read white it display a #FFFFFF hex [duplicate] 【发布时间】:2020-01-07 02:07:24 【问题描述】:

我正在尝试从数据库中读取颜色 有时是十六进制 (#FFFFFF),有时是名称 (red,white) 我想要一种将这些字符串转换为十六进制代码

的方法

【问题讨论】:

更新数据库中的数据统一。 @MorrisonChang 先生,这不是重复的。他只想检查然后得到颜色。 @Ashish 来自链接的第一个答案是public static int parseColor (String colorString),它可以采用十六进制值或一组有限的颜色字符串名称,例如“白色”、“黑色”等。真的,@JakeB 的答案是正确的,但需要 OP 的反馈。 检查字符串是否匹配十六进制格式,否则请参阅@MorrisonChang 链接。最好的解决方案是 JakeB 的评论 @MorrisonChang 我没有检查答案,我只是在阅读问题。对不起 【参考方案1】:

Color.parseColor("#FFFFFF") 是您需要的十六进制值。

您不能将单词转换为十六进制颜色。为此,您需要创建映射。它看起来像这样:

String hexColor;

switch(colorName)
      case "red": hexColor = Color.RED;
           break;
      case "white": hexColor = Color.WHITE;
           break;
      case "brown": hexColor = Color.parse("#654321")
           break;
           ...

无论如何,这是一个杂项,应该在数据库内进行统一映射,以使应用支持更舒适。

希望对你有帮助。

【讨论】:

不可能限制所有颜色 这是您的数据库 - 您可以废弃它并使用此名称而不是十六进制获取所有颜色,并像示例中那样映射所有这些颜色。基本上这就是我所说的舒适支持的意思——每次出现新颜色时,你都必须修改你的应用程序,这会让你感到不舒服。您可以为数据库创建迁移 - 将所有这些颜色映射到十六进制并在数据库中用查询替换它们。

以上是关于有没有一种方法可以从名称中获取颜色,例如当程序读取白色时,它会显示 #FFFFFF hex [重复]的主要内容,如果未能解决你的问题,请参考以下文章

C ++获取正在运行的进程的DLL的基地址

如何在没有大量if语句的情况下获取颜色的名称?

如何在 Photoshop 填充图层中检索颜色

保存名称从文本框中读取的文件。 C#

为每个不同的消息发件人随机获取颜色(如哈希)

没有 order by 子句的 Oracle 排序结果集