我有一个带有文件扩展名的字符串:“ png,jpg,jpeg,tiff,bmp,cdr”。我需要为输入的接受属性做准备,例如“ .png,.jpg,.jpeg,.tiff,.bmp,.cdr”。 如何为每个元素添加点?我需要最简单,最优雅的方式。
答案 0 :(得分:5)
我的优雅方法是使用Set而不是字符串。由于您以字符串形式接收数据,因此我使用了Java 8流。我正在执行以下操作:
","
"."
示例代码如下:
String x = "png,jpg,jpeg,tiff,bmp,cdr";
Set<String> extensions = Arrays.stream(x.split(",")).map(str -> "." + str).collect(Collectors.toSet());
System.out.println(extensions);
输出为:
[.bmp, .jpg, .cdr, .jpeg, .png, .tiff]
如果要保留订单,可以使用LinkedHashSet。
希望这会有所帮助。祝你好运。
答案 1 :(得分:2)
我认为我只使用replaceAll
并假设String
始终具有某些文件扩展名
String ext = "png,jpg,jpeg,tiff,bmp,cdr";
ext = "."+ext.replaceAll(",",",.");
输出为
.png,.jpg,.jpeg,.tiff,.bmp,.cdr
答案 2 :(得分:0)
我用流的减少功能解决了这个问题。
String str = "png,jpg,jpeg,tiff,bmp,cdr";
String result = Stream.of(str.split(","))
.map(s -> "." + s)
.reduce(" ", (s1, s2) -> {
return s1 + "," + s2;
});
System.out.println(result.substring(2,result.length()));
此程序打印 .png,.jpg,.jpeg,.tiff,.bmp,.cdr