首页 > 解决方案 > 如何通过将整行与枚举值进行比较来解析整行?

问题描述

我有一个来自文件的输入字符串,如下所示:

Hey_world__Welcome::To the java
Hello::World

和枚举如下:

public enum Enum {
   Hey_world, Hello
}

我必须比较字符串中的枚举值,如果字符串中存在枚举,它应该只在输出中打印该特定字符串。

我试过这样的事情:

if(Enum.valueOf((str.split("::")[0]).split("__")[0]).equals(Enum.Hey_world)) {
  System.out.println(string); //should return string(Hey_world__Welcome::To the java)
}
else if(Enum.valueOf(str.split("::")[0]).equals(Enum.Hello)){
  System.out.println(string); //should return string(Hello::World)
}

标签: javaenums

解决方案


您可以像这样使用正则表达式。

Pattern p = Pattern.compile(
    Arrays.stream(Enum.values())
        .map(e -> e.toString())
        .collect(Collectors.joining("|")));
String str1 = "Hey_world__Welcome::To the java";
String str2 = "Hello::World";
if (p.matcher(str1).find())
    System.out.println(str1);
if (p.matcher(str2).find())
    System.out.println(str2);

推荐阅读