csv 从用逗号分隔的字符串中删除特定值的Java代码

3bygqnnd  于 2023-03-15  发布在  Java
关注(0)|答案(2)|浏览(116)

我有一个像下面这样的值String original =“109,107,108”;
现在,我必须删除107前面和后面的逗号,并且应该得到如下字符串的输出
新字符串=“109,108”
要删除的值可以是动态的。如果说我将得到的值从字符串中删除从另一个方法。

y3bcpkx1

y3bcpkx11#

您可以在逗号处拆分字符串,然后移除不需要的值并再次连接它。下面是使用Java 8 Streams API执行此操作的示例:

Arrays.stream("1,2,3".split(","))
    .filter(part -> !part.equals("2"))
    .collect(Collectors.joining(","))

我还注意到你的问题中有“CSV”标签。如果你打算解析CSV,最好使用fast-csvcommons-csv这样的库。它们会更优化,也支持更复杂的情况,比如转义。

elcex8rz

elcex8rz2#

如果有多个重复的值,这里有一种方法可以按位置删除。

String str = "123,456,123,982,345";
String[] array = str.split(",");
for (int pos = 1; pos <= 5; pos++) {
    String result = removeItem(str, pos);
    System.out.printf("Removing %s at pos %d : %s%n", array[pos-1], pos,
            result);
}

印刷品

Removing 123 at pos 0 : 456, 123, 982, 345
Removing 456 at pos 1 : 123, 123, 982, 345
Removing 123 at pos 2 : 123, 456, 982, 345
Removing 982 at pos 3 : 123, 456, 123, 345
Removing 345 at pos 4 : 123, 456, 123, 982
  • 传递字符串和位置(从1开始)
  • 按分隔符拆分字符串以创建元素数组
  • 创建ArrayList的元素。
  • 拆下指定位置的一个。
  • 和join,返回一个String。
public static String removeItem(String str, int pos) {
    List<String> list = new ArrayList<>(Arrays.asList(str.split(",")));
    list.remove(pos-1);
    return String.join(",", list);
}

如果不存在重复项,则使用String.replace()

String str = "123,456,423,982,345";
str = str.replace("423,","); // replace with an empty string
System.out.println(str);

印刷品

123,456,982,345

相关问题