簡體   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