如何在逗号分隔的字符串中的每个元素中添加字符

时间:2019-07-20 07:54:35

标签: java string

我有一个带有文件扩展名的字符串:“ png,jpg,jpeg,tiff,bmp,cdr”。我需要为输入的接受属性做准备,例如“ .png,.jpg,.jpeg,.tiff,.bmp,.cdr”。 如何为每个元素添加点?我需要最简单,最优雅的方式。

3 个答案:

答案 0 :(得分:5)

我的优雅方法是使用Set而不是字符串。由于您以字符串形式接收数据,因此我使用了Java 8流。我正在执行以下操作:

  1. 使用","
  2. 分割数组
  3. 使用"."
  4. 作为前缀
  5. 将其收集到一个集合中。

示例代码如下:

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