Как переписать регулярное выражение, что с квадратными скобками удаляло запятые в строке
System.out.println(integerList.toString().replaceAll("^\\[|\\]$", ""));
Как переписать регулярное выражение, что с квадратными скобками удаляло запятые в строке?
Пример строки, для которой нужен шаблон:
[38.5, 33.8, 33.7, 37.2, 38.4]
Ответы (3 шт):
Вот как вы можете это сделать для 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);
Изменить саму регулярку достаточно "просто":
// с использованием набора символов внутри []
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));
выводятся элемента массива в консоль с помощью 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);