2017-01-05 5 views
1

Я печатаю массив, но я хочу только отображать числа. Я хочу удалить скобки и запятые из 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]] 
+3

'cubeToString.replaceAll (" \\ D "," ")' – 4castle

ответ

4

Вы можете использовать специальные символы [ и ], чтобы сформировать шаблон, а затем \\ избежать [ и ] (от вашего входа), как,

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

или заменить все от цифры. Например,

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

спасибо, что это сработало :) – cuber

+0

на стороне не @Elliot Frisch, если бы я хотел изменить числа в строке, например, изменить 0 на 1 и 3 на 0? они не являются особыми символами, и я меняю более одного персонажа. – cuber

+0

Я бы, вероятно, использовал 'Map ', чтобы содержать от/до 'String' сопоставлений и' StringBuilder' с простым циклом. –

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