Регулярное выражение. Экранирование слэша

Есть код

"Первая часть строки/подстрока".split("\\s*/\\s*")

в результате которого получается массив из 2х строк

Первая часть строки
подстрока

Вопрос: как изменить исходную строку, чтобы в результате был массив из одного элемента исходной строки? Само регулярное выражение менять нельзя, оно зашито в библиотеке (значения не имеет какая)


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

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

Никак. Регулярке достаточно одного слеша в любом месте строки, соответственно экранировать его никак нельзя. Только заменить на другой символ.

→ Ссылка
Автор решения: InterceptorTSK

Создайте новый нужный массив. Из одного элемента.

// Исходная строка
String str = "Первая часть строки/подстрока";
String[] result = str.split("\\s*/\\s*");

// Массив из одного элемента
String[] oneElementArray = new String[1];
// Поместите в этот массив что нужно
// Например, исходную строку
oneElementArray[0] = str;

П.с.: В дот.нете это точно решаемо, без выкрутасов

  1. Нужно пофиксить строку, взять её адрес, заменить слеш чем нибудь
  2. Отправить такую строку в сплиттер
  3. Получить результат без разделения на подстроки, результат будет массивом, из одной строки, это та же строка
  4. Опять пофиксить строку уже из возвращённого массива, взять адрес строки, вернуть слеш обратно в строку
  5. Иметь ввиду, что такая операция подмены может сказаться на например хешировании, поиске итд, но сплиттер не пользуется всем этим, значит подмена слеша [и возврат слеша на место где он был] пройдёт без последствий для строки
  6. По сути это всё возвращает ту же оригинальную строку [с точностью до ссылки на строку] из сплиттера, но "обёрнутую" массивом

В жабе что то подобное есть?

→ Ссылка