Разделить строку на пробелы в Java, за исключением того, что между кавычками (например, лечить \ “привет мир \” как один токен)
Как разделить String
на основе пространства, но взять подстрочные подстроки как одно слово?
Пример:
Location "Welcome to india" Bangalore Channai "IT city" Mysore
он должен храниться в ArrayList
как
- Форма слишком большого исключения
- java.lang.numberformatexception: недействительный double: ""
- Может ли Android Studio использоваться для запуска стандартных проектов Java?
- Android: как приостановить и возобновить таймер обратного отсчета?
- Как читать текстовый файл в Android?
Location Welcome to india Bangalore Channai IT city Mysore
- добавление ресурсов в intellij для проекта java
- Android: как скрыть ActionBar при определенных действиях
- Как поместить банку в classpath в Eclipse?
- Где получить строковый литерал «UTF-8» в Java?
- Строковый постоянный пул
- Более эффективный способ для цикла паузы
- FirebaseListAdapter не подталкивает отдельные элементы для приложения для чата - Firebase-Ui 3.1
- используя serial port RS-232 в Android?
Вот как:
String str = "Location \"Welcome to india\" Bangalore " + "Channai \"IT city\" Mysore"; List list = new ArrayList (); Matcher m = Pattern.compile("([^\"]\\S*|\".+?\")\\s*").matcher(str); while (m.find()) list.add(m.group(1)); // Add .replace("\"", "") to remove surrounding quotes. System.out.println(list);
Вывод:
[Location, "Welcome to india", Bangalore, Channai, "IT city", Mysore]
Регулярное выражение просто говорит
-
[^"]
– токен, начинающийся с чего-то другого, кроме"
-
\S*
– за которым следуют ноль или более непространственных символов - …или…
-
".+?"
–"
-символ, за которым следуют все, до другого"
.
Первый раскол для двойных кавычек:
String s = 'Location "Welcome to india" Bangalore Channai "IT city" Mysore'; String[] splitted = s.split('"');
затем разбивается с помощью пробелов каждая строка в разбитом массиве
for(int i = 0; i< splitted.length; i++){ //split each splitted cell and store in your arraylist }