Saya cukup baru di Java dan tidak yakin bagaimana mendekati masalah ini. Saya memiliki string yang dapat berisi Enum tetapi dalam versi String. Sebagai contoh:

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

Bagaimana cara mengonversi Color.RED menjadi enum dalam string di atas?

1
Just Another Coder 11 Mei 2021, 21:14

2 jawaban

Jawaban Terbaik

Anda menemukan teks RED, mis. menggunakan regex, lalu panggil 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);
}
2
Andreas 11 Mei 2021, 18:28

Alternatif lain, adalah menggunakan String.replaceAll untuk mengisolasi warna di dalam string. Ini menghapus semua except warna. \\S+ mengatakan satu atau lebih karakter non spasi. Jadi bisa apa saja, termasuk sesuatu seperti @#I@S. Anda dapat memodifikasinya agar sesuai dengan batasan enum Anda.

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