получить в итоге только ключ : значение ? Перечисления бывают разными. Описание ниже
Вопрос уже был мною задан здесь и @ipatev_nn дал мне подсказку, но не понимаю как улучшить..
У меня есть строка
charAndValue = "[Type of document : A copy, the book, Document format : A4]"
Я пытаюсь решить свою проблему сплитом:
String charAndValue = "[Type of document : A copy, the book, Document format : A4]"
List<String> listVal = new ArrayList<>(Arrays.asList(charAndValue.split(", (?=[A-Z])")));
После сплита у меня лист с размером 2, как мне и нужно:
"Type of document : A copy, the book"
"Document format : A4"
Но есть вариант, когда приходит строка, например:
String charAndValue = "[Регион оказания услуг : Москва, Московская область]"
И получается лист с размером два:
"Регион оказания услуг : Москва"
"Московская область"
Ответы (1 шт):
Автор решения: Nowhere Man
→ Ссылка
Можно дополнить условие разбиения: ", (?=\\p{Lu}[^:]+:)", тогда может отработать:
String charAndValue = "[Type of document : A copy, the book, Document format : A4, Регион оказания услуг : Москва, Московская область, Российская Федерация]";
List<String> listVal = new ArrayList<>(Arrays.asList(charAndValue.split(", (?=\\p{Lu}[^:]+:)")));
listVal.forEach(System.out::println);
[Type of document : A copy, the book
Document format : A4
Регион оказания услуг : Москва, Московская область, Российская Федерация]