Разделить строку на пробелы в 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 } 
  • Каково использование System.in.read ()?
  • Как создать Android-hashи Facebook Facebook?
  • Доступны ли значения, определенные в MANIFEST.MF программно?
  • Как разбить строку java на обратную косую черту
  • Android - предотrotation перезагрузки WebView при повороте
  • Студия Android - Не удалось найти целевой Android-18
  • org.openqa.selenium.WebDriverException: неизвестная ошибка: результат функции вызова отсутствует «значение»
  • Модернизация и RxJava: как объединить два запроса и получить доступ к обеим результатам?
  • скопируйте 2d-массив в java
  • Удалить дубликаты из ArrayLists
  • Портрет для телефона, альбом для планшета (Android-макет)
  • Interesting Posts
    Давайте будем гением компьютера.