Java: String split (): Я хочу, чтобы он включал пустые строки в конце

У меня есть следующая строка:

String str = "\nHERE\n\nTHERE\n\nEVERYWHERE\n\n"; 

Если вы просто напечатаете это, оно будет выводиться следующим образом (конечно, \n не будет «буквально» напечатано):

 \n HERE\n \n THERE\n \n EVERYWHERE\n \n \n 

Когда я вызываю метод split("\n") , я хочу получить все строки между новыми строками ( \n ) даже пустые строки в конце.

Например, если я сделаю это сегодня:

 String strArray[] = str.split("\n"); System.out.println("strArray.length - " + strArray.length); for(int i = 0; i < strArray.length; i++) System.out.println("strArray[" + i + "] - \"" + strArray[i] + "\""); 

Я хочу, чтобы он печатался так (Output A):

 strArray.length - 8 strArray[0] - "" strArray[1] - "HERE" strArray[2] - "" strArray[3] - "THERE" strArray[4] - "" strArray[5] - "EVERYWHERE" strArray[6] - "" strArray[7] - "" 

В настоящее время он печатается следующим образом (выход B), и любые конечные пустые строки пропускаются:

 strArray.length - 6 strArray[0] - "" strArray[1] - "HERE" strArray[2] - "" strArray[3] - "THERE" strArray[4] - "" strArray[5] - "EVERYWHERE" 

Как сделать метод split() включать пустые строки, как в Output A? Я, конечно, мог написать многострочный fragment кода, но хотел знать, прежде чем тратить время на его реализацию, если бы был простой способ или дополнительные две строки кода, которые могли бы мне помочь. Благодаря!

используйте str.split("\n", -1) (с аргументом отрицательного limit ). Когда split дается ноль или нет аргумента limit он отбрасывает конечные пустые поля, и когда ему задан аргумент положительного limit он ограничивает количество полей этим числом, но отрицательный предел означает разрешить любое количество полей и не отбрасывать завершающие пустые поля , Это описано здесь, и поведение берется из Perl.

Метод разделения с одним аргументом указан для игнорирования конечных пустых разделов строк, но версия, которая принимает аргумент «limit», сохраняет их, поэтому одним из вариантов будет использование этой версии с большим лимитом.

 String strArray[] = str.split("\n", Integer.MAX_VALUE); 

Лично мне нравится утилита Guava для расщепления:

 System.out.println(Iterables.toString( Splitter.on('\n').split(input))); 

Затем, если вы хотите настроить поведение пустой строки, вы можете сделать это:

 System.out.println(Iterables.toString( Splitter.on('\n').omitEmptyStrings().split(input))); 
  • Java: метод для получения позиции соответствия в String?
  • Как работает строковая подстрока в Swift
  • Как обрезать пробелы из строки Python?
  • Пакет / Поиск и редактирование строк в TXT-файле
  • p: commandbutton action не работает внутри p: dialog
  • Почему class String объявлен окончательным в Java?
  • Алгоритм поиска нескольких совпадений строк
  • Java разделяет строку на массив
  • Разделение строки Java удалено пустым значением
  • Как передать переменные из awk в команду оболочки?
  • Что рекурсивно распространяется на все файлы в текущем каталоге?
  • Interesting Posts

    Использование объектов Entity Framework как бизнес-объектов?

    “Android.view.WindowManager $ BadTokenException: невозможно добавить окно” на buider.show ()

    Как установить расширенные ассоциации файлов в Windows 7?

    Различные разрешения поддержки android

    Каков самый простой способ шифрования каталога? (На Ubuntu)

    Windows 7 Автоматический вход в систему с учетной записью пользователя по умолчанию?

    Расшифровка диска TrueCrypt, извлеченного с другой машины

    Бесплатная программа для автоматического обнаружения аппаратного обеспечения

    Можно ли написать вертикально в текстовом виде в android?

    В чем разница между видимостью: скрытой и отображаемой: нет?

    Android запускает музыкальный плеер, используя намерение

    EditText setError () со значком, но без всплывающего сообщения

    HW ускоренная активность – как получить ограничение размера текстуры OpenGL?

    Команда WinXP dir: 3 и 4 расширения char одинаковы?

    Добавить пользовательский шрифт для полного приложения для Android

    Давайте будем гением компьютера.