Есть строка 1,2,3,"4, A",B, 5,C,6,7,8. Подскажите пожалуйста, как ее разбить на подстроки по запятой но пропустив запятую + пробел? Ниже код который работает, может есть более простой вариант?
String s = "1,2,3,\"4, A\",B, 5,C,6,7,8";
String[] ss;
s = s.replaceAll(", ", "#%&"); // меняем "запятая + пробел" на любой символ
ss = s.split(",");
for (int i = 0; i < ss.length; i++) {
System.out.println(ss[i].replaceAll("#%&", ", ")); // возвращаем запятую с пробелом обратно
}
Т.к. split принимает регулярное выражение, то можно использовать просмотр вперед с отрицанием:
String[] ss = s.split(",(?!\\s)");
Выражение ,(?!\s) означает: «запятая, если за ней не следует пробельный символ». Пробельный символ может быть любой, если нужно игнорировать именно пробел, то укажите его явно:
String[] ss = s.split(",(?! )");
String s = "1,2,3,\"4, A\",B, 5,C,6,7,8";
StringTokenizer st = new StringTokenizer(s, ",");
while(st.hasMoreTokens()){
String nextToken = st.nextToken();
if (!nextToken.equals(nextToken.trim())) System.out.print(",");
else System.out.println("");
System.out.print(nextToken);
}
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости