Что-то похожее на split ()? - PullRequest
5 голосов
/ 04 марта 2012

Я хочу взять строку и разбить ее на массив при переносе строк (\ n) Я пытался использовать split, но это убирает разделитель. Мне нужно, чтобы \n оставалось в конце каждой строки, если она существует. Что-то подобное уже существует, или мне нужно будет это самому кодировать?

Ответы [ 3 ]

4 голосов
/ 04 марта 2012

Альтернатива решению @Hovercraft с утверждением Lookahead:

String[] result = s.split("(?=\n)");

Более подробная информация о Lookahead в http://www.regular -expressions.info / lookaround.html

4 голосов
/ 04 марта 2012

Я пытался использовать сплит, но это убирает разделитель. Мне нужно, чтобы \ n оставалось в конце каждой строки, если она существует.

Вы все еще можете использовать его и сохранить разрыв строки, если в своем регулярном выражении вы используете упреждающий просмотр или упускание. Проверьте лучший учебник по регулярным выражениям, который я знаю:
Regex Tutorial
Секция по осмотру учебника Regex .

Например:

public class RegexSplitPageBrk {


   public static void main(String[] args) {
      String text = "Hello world\nGoodbye cruel world!\nYeah this works!";
      String regex = "(?<=\\n)";  // with look-behind!

      String[] tokens = text.split(regex);

      for (String token : tokens) {
         System.out.print(token);
      }
   }
}

Предварительный просмотр или предварительный просмотр (также называемый «осмотром») не разрушают символы, которым они соответствуют.

1 голос
/ 04 марта 2012

Другим решением является просто добавление разделителей после разделения

String delimiter = "\n"
String[] split = input.split(delimiter);
for(int i = 0; i < split.length; i++){
    split[i] += delimiter;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...