从逗号sep属性列表创建数组的更优雅的解决方案?

Jim*_*mmy 9 java arrays properties

在我的属性文件中,我有一个属性,其中包含逗号分隔的值列表

在我的代码中,我想加载该属性,将其从逗号中拆分,并将每个值添加到数组中.我还想确保由于空格等原因我没有数组中的值

示例属性:

prop_allowed_extensions = .jpeg,tiff, .txt 
Run Code Online (Sandbox Code Playgroud)

到目前为止,我已经想出了这个,但它感觉很脏,有更优雅的解决方案吗?

String test = classProperties.getProperty("prop_allowed_extensions", "txt, jpeg");
String[] splitString = StringUtils.split(test, ',');
String[] newString = new String[splitString.length];             
for (int i = 0; i < splitString.length; i++)
{
   newString[i] = StringUtils.trim(splitString[i]);                
}
Run Code Online (Sandbox Code Playgroud)

我只想要文件扩展名的文本,是否适合使用正则表达式删除空格/非字母?

ins*_* me 7

Apache Jakarta Commons Configuration以干净的方式处理属性文件,允许您以不同的格式指定列表:

colors.pie = #FF0000, #00FF00, #0000FF
Run Code Online (Sandbox Code Playgroud)

要么

colors.pie = #FF0000;
colors.pie = #00FF00;
colors.pie = #0000FF;
Run Code Online (Sandbox Code Playgroud)

并得到这样的列表:

String[] colors = config.getStringArray("colors.pie");
List colorList = config.getList("colors.pie");
Run Code Online (Sandbox Code Playgroud)

请参阅操作方法

  • 如果您不想使用它,您可能有兴趣了解它们是如何在代码中完成的:) (2认同)

Sea*_*oyd 4

您可以分两步完成:

String[] allowedExtensions = str.replaceAll("[^\\w,_]", "").split(",")
Run Code Online (Sandbox Code Playgroud)

(首先删除任何不是逗号、下划线或单词字符(字母或数字)的内容,然后分割生成的字符串