繁体   English   中英

Java 从字符串转换为枚举

[英]Java Converting from String to Enum

我对 Java 很陌生,不知道如何解决这个问题。 我有一个可以包含枚举但在字符串版本中的字符串。 例如:

String str = "Hello Color.RED what's up?"

如何将 Color.RED 转换为上面字符串中的枚举?

您找到文本RED ,例如使用正则表达式,然后调用Color.valueOf(name)

Pattern p = Pattern.compile("\\bColor\\.([A-Za-z][A-Za-z0-9_]*)\\b");
Matcher m = p.matcher(str);
if (m.find()) {
    String name = m.group(1);
    Color color = Color.valueOf(name);
    System.out.println(color);
}

另一种选择是使用String.replaceAll来隔离字符串中的颜色。 这将删除except颜色之外的所有内容。 \\S+表示一个或多个非空格字符。 所以它可以是任何东西,包括像@#I@S这样的东西。 您可以对其进行修改以适应枚举的约束。

String str = "Hello Color.RED what's up?";
    
String colr = str.replaceAll(".*\\bColor\\.(\\S+).*", "$1");
Color color = Color.valueOf(colr);
System.out.println(color);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM