替换String中的多个字符

时间:2017-01-05 04:06:10

标签: java regex string replaceall

我正在打印一个数组,但我只想显示数字。我想从String中删除括号和逗号(只留下数字)。到目前为止,我已经能够删除逗号但我正在寻找一种方法为replaceAll方法添加更多参数。

如何删除括号和逗号?

cubeToString = Arrays.deepToString(cube);
System.out.println(cubeToString); 
String cleanLine = "";
cleanLine = cubeToString.replaceAll(", ", ""); //I want to put all braces in this statement too
System.out.println(cleanLine);

输出结果为:

[[0, 0, 0, 0], [1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4], [5, 5, 5, 5]]
[[0000][1111][2222][3333][4444][5555]]

2 个答案:

答案 0 :(得分:4)

您可以使用特殊字符[]来形成图案,然后使用\\来转义[](来自您的输入) )喜欢,

cleanLine = cubeToString.replaceAll("[\\[\\]\\s,]", "");

替换所有内容而非数字。像,

cleanLine = cubeToString.replaceAll("\\D", "");

答案 1 :(得分:0)

您正在使用Java,就像使用脚本语言一样。 在这种情况下,它恰好运行良好,因为您的数组只包含数字,您不必担心转义可能也出现在数组元素中的字符。

但是,多次转换字符串仍然没有效率或类似Java,其中一个字符串使用正则表达式(replaceAll),以获得最终结果。

更好,更有效的方法是直接构建所需的字符串,而不使用任何逗号或方括号:

public static void main(String[] args) throws Exception {
    int[][] cube = { { 0, 0, 0, 0 }, { 1, 1, 1, 1 }, { 2, 2, 2, 2 }, { 3, 3, 3, 3 }, { 4, 4, 4, 4 },
            { 5, 5, 5, 5 } };

    StringBuilder builder = new StringBuilder();
    for (int[] r : cube) {
        for (int c : r) {
            builder.append(c);
        }
    }
    String cleanLine = builder.toString();
    System.out.println(cleanLine);
}

输出:

000011112222333344445555