Как переписать регулярное выражение, что с квадратными скобками удаляло запятые в строке

System.out.println(integerList.toString().replaceAll("^\\[|\\]$", ""));

Как переписать регулярное выражение, что с квадратными скобками удаляло запятые в строке?

Пример строки, для которой нужен шаблон:

[38.5, 33.8, 33.7, 37.2, 38.4]

Ответы (3 шт):

Автор решения: pyduti

Вот как вы можете это сделать для JS

let str = "[38.5, 33.8, 33.7, 37.2, 38.4]";
str = str.substring(1, str.length - 1);
str = str.replace(/,\s*/g, " ");
console.log(str);

для Java

String str = "[38.5, 33.8, 33.7, 37.2, 38.4]";
str = str.substring(1, str.length() - 1);
str = str.replaceAll(",\\s*", " ");
System.out.println(str);
→ Ссылка
Автор решения: Nowhere Man

Изменить саму регулярку достаточно "просто":

// с использованием набора символов внутри []
System.out.println(integerList.toString().replaceAll("[,\\[\\]]", ""));
// с использованием альтернатив |
System.out.println(integerList.toString().replaceAll(",|\\[|\\]", ""));

Однако здесь в общем случае есть риск удаления ненужных символов, например, для чисел с плавающей точкой при использовании русской локали запятая будет использоваться в записи самого числа, или при выводе списка строк, содержащих какие-либо из удаляемых символов.

Поэтому, как заметили в комментариях, правильнее было бы, вместо "развлечения" с регулярными выражениями, вывести поэлементно список с использованием нужного разделителя, благо для этого существует масса способов:

// построчный вывод
// для списка
integerList.forEach(System.out::println);
// для массива
Arrays.stream(arr).forEach(System.out::println);


// вывод в одну строку, разделённый парой пробелов
integerList.forEach(n -> System.out.print(n + "  "));

// преобразование чисел в строки поэлементно + объединение при помощи Stream API
String str = integerList.stream()
    .map(Objects::toString)
    .collect(Collectors.joining(" "));
System.out.println(str);

// String::join для списка строк
System.out.println(String.join(" ", strList));
// аналогично для массива
System.out.println(String.join(" ", strArray));
→ Ссылка
Автор решения: ksa

выводятся элемента массива в консоль с помощью Arrays.toString [38.5, 33.8, 33.7, 37.2, 38.4], надо их вывести без квадратных скобок и запятых, вышеуказанное регулярное выражение удаляет квадратные скобки, не получается дописать, чтобы и запятые удаляло

Предложу такой вариант...

let str = "[38.5, 33.8, 33.7, 37.2, 38.4]";
const r = /[\[\],]/g
str = str.replace(r, "");
console.log(str);

→ Ссылка