Страницы

Поиск по вопросам

понедельник, 6 января 2020 г.

Как разбить строку по запятой, кроме случая когда за ней следует пробел?

#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); }

Комментариев нет:

Отправить комментарий