PHP код:
String str = "{{p_physical_defence;{all};-10;per};{i_dispel_by_slot_probability;pd_up;100}}";
List<String> effectsArray = splitList(str);
PHP код:
private static List<String> splitList(String s) {
String s2 = s.substring(1, s.length() - 1);
List<String> res = new ArrayList<>();
StringBuffer buff = new StringBuffer();
int level = 0;
for (char part : s2.toCharArray())
{
if (part == '{')
level++;
else if (part == '}')
level--;
else if (part == ';' && level == 0)
{
res.add(buff.toString());
buff = new StringBuffer();
continue;
}
buff.append(part);
}
res.add(buff.toString());
return res;
}
каждый след уровень юзай splitList заного