Java 删除字符串数组中的破折号

Java Remove Dash In String Array

目前我正在尝试删除字符串数组中的破折号。我在下面尝试的代码无效。

splitTimeStamp[0].replaceAll("[\s\-()]", "");
System.out.println(splitTimeStamp[0]);

从另一个 Whosebug 页面获取了 replaceAll 代码。

提前致谢!

方法returns一个新的String。原来的没变。
您需要像这样保存结果

splitTimeStamp[0] = splitTimeStamp[0].replaceAll("[\s\-()]", "");
System.out.println(splitTimeStamp[0]);

这里有一个 Java8 的方法。

String[] result = Arrays.stream(source)
    .map(s -> s.replaceAll("[\s\-()]", ""))
    .toArray(String[]::new);

这种方法比命令式方法更加并行友好。

在使用 String class 时,您始终需要记住,如果 String 是不可变的 class,则永远不要更改现有对象。所以 String class 的每个方法总是 returns 您需要重新分配的新对象。

同样的错误是你犯的。请在调用 replaceAll 时将其重新分配,因为它不能更改现有的,因为它是不可变的。

如果您想替换数组中的所有内容,我建议您使用以下解决方案:

String[] splitTimeStamp = //...some data
Arrays.setAll(splitTimeStamp, index -> splitTimeStamp[index].replaceAll("[\s\-()]", ""));