Исходя из вашего текущего редактирования, похоже, что вы хотите разделить на месте, которое либо
- непосредственно перед
{
- непосредственно после
}
В этом случае вы можете использовать метод split
, который поддерживает регулярное выражение (регулярное выражение).Regex предоставляет обходные механизмы, такие как
(?=subregex)
, чтобы увидеть, если мы непосредственно до что-то, что может соответствовать subregex
(?<=subregex)
чтобы увидеть, если мы непосредственно после что-то, что может быть сопоставлено с subregex
Также {
и }
считаются метасимволами регулярных выражений (мы можемиспользуйте их как {m,n}
, чтобы описать количество повторений, например, a{1,3}
может соответствовать a
, aa
, aaa
, но не aaaa
или более), поэтому чтобы сделать его обычным литералом, нам нужно экранировать его как \{
и \}
Последнее, что вам нужно, это оператор OR
, который представлен как |
.
Таким образом, ваш код может выглядеть следующим образом:
String str = "a{b}c{d}";
String[] arr = str.split("(?=\\{)|(?<=\\})"); // split at places before "{" OR after "}"
for (String s : arr){
System.out.println(s);
}
Выход:
a
{b}
c
{d}
Демо: https://ideone.com/FdUbKs