当字符串中有空格时,是否可以通过字符串获取枚举?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当字符串中有空格时,是否可以通过字符串获取枚举?相关的知识,希望对你有一定的参考价值。

我有一个通过字符串值获取Enum的方法,但是该方法区分大小写,并且不能容忍空格。我该如何解决?

enum MyEnum 
    ID("ID"), NEW_CODE("new code"), VALUES("values");


public static <T extends Enum<T>> T 
    getEnumFromString(Class<T> c, String string) 
    if (c != null && string != null) 
        try 
            return Enum.valueOf(c, string);
         catch (IllegalArgumentException ex) 
            //If no enum value was not found
        
    
    return null;

答案

按照惯例,枚举应为大写,并使用下划线作为分隔符(甚至不允许使用空格。)>

如果遵循约定(您要执行的操作,则可以只将string转换为大写并用下划线替换任何空格:

Enum.valueOf(c, string.toUpperCase().replace(' ','_');
另一答案

我假设您的枚举定义如下:>

enum MyEnum
    ID("ID"), NEW_CODE("new code"), VALUES("values");
    String value;
    MyEnum(String value) 
        this.value = value;
    
  
另一答案

如果您要查找任意文本,则不能依靠使用Enum.valueOf。您需要在枚举本身中公开查找文本,然后使用它来解析"string"

下面使枚举实现一个接口,然后使用该接口方法来检索“文本”:

以上是关于当字符串中有空格时,是否可以通过字符串获取枚举?的主要内容,如果未能解决你的问题,请参考以下文章

当项目名称有空格时,无法从桥头获取正确的文件路径

有空格时,文本字段返回 nil

解决Python 字典写入文件出行首行有空格的解决方法

C#当有空单元格时按几列降序对数据表进行排序

sql 怎么去掉最后一个字符,请看详细

Manacher算法+注释