Разделить строку на пробелы в Java, за исключением того, что между кавычками (например, лечить \ “привет мир \” как один токен)

Как разделить String на основе пространства, но взять подстрочные подстроки как одно слово?

Пример:

 Location "Welcome to india" Bangalore Channai "IT city" Mysore 

он должен храниться в ArrayList как

 Location Welcome to india Bangalore Channai IT city Mysore 

Вот как:

 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 } 
  • Android: ClickableSpan в интерактивном TextView
  • Как настроить пользовательское хранилище ключей для отладки в eclipse для Android
  • Какая версия JDK (уровень языка) требуется для Android Studio?
  • Как добавить параметры в HTTP GET-запрос в Android?
  • Java: проблема неразрешенной компиляции
  • Вам нужно сохранить высокий балл для Android-игры
  • Регистрация кнопки гарнитуры с помощью BroadcastReceiver на Android
  • Анонимные кодовые блоки в Java
  • Может ли Android SDK работать с JDK 1.7?
  • Файл Android FileInputStream для чтения () в String
  • Выполнение другой java-программы из нашей java-программы
  • Давайте будем гением компьютера.