#java #split
Есть строка 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("#%&", ", ")); // возвращаем запятую с пробелом обратно }
Ответы
Ответ 1
Т.к. split принимает регулярное выражение, то можно использовать просмотр вперед с отрицанием: String[] ss = s.split(",(?!\\s)"); Выражение ,(?!\s) означает: «запятая, если за ней не следует пробельный символ». Пробельный символ может быть любой, если нужно игнорировать именно пробел, то укажите его явно: String[] ss = s.split(",(?! )");Ответ 2
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); }
Комментариев нет:
Отправить комментарий