Регулярное выражение. Экранирование слэша
Есть код
"Первая часть строки/подстрока".split("\\s*/\\s*")
в результате которого получается массив из 2х строк
Первая часть строки
подстрока
Вопрос: как изменить исходную строку, чтобы в результате был массив из одного элемента исходной строки? Само регулярное выражение менять нельзя, оно зашито в библиотеке (значения не имеет какая)
Ответы (2 шт):
Автор решения: Qwertiy
→ Ссылка
Никак. Регулярке достаточно одного слеша в любом месте строки, соответственно экранировать его никак нельзя. Только заменить на другой символ.
Автор решения: InterceptorTSK
→ Ссылка
Создайте новый нужный массив. Из одного элемента.
// Исходная строка
String str = "Первая часть строки/подстрока";
String[] result = str.split("\\s*/\\s*");
// Массив из одного элемента
String[] oneElementArray = new String[1];
// Поместите в этот массив что нужно
// Например, исходную строку
oneElementArray[0] = str;
П.с.: В дот.нете это точно решаемо, без выкрутасов
- Нужно пофиксить строку, взять её адрес, заменить слеш чем нибудь
- Отправить такую строку в сплиттер
- Получить результат без разделения на подстроки, результат будет массивом, из одной строки, это та же строка
- Опять пофиксить строку уже из возвращённого массива, взять адрес строки, вернуть слеш обратно в строку
- Иметь ввиду, что такая операция подмены может сказаться на например хешировании, поиске итд, но сплиттер не пользуется всем этим, значит подмена слеша [и возврат слеша на место где он был] пройдёт без последствий для строки
- По сути это всё возвращает ту же оригинальную строку [с точностью до ссылки на строку] из сплиттера, но "обёрнутую" массивом
В жабе что то подобное есть?