Reputation: 4427
I'm looking to take a string and break it into an array at line breaks (\n) I tried using split
but that takes away the delimiter. I need the \n
to be kept at the end of each line if it exists. Does something like this already exist or will I need to code it myself?
Upvotes: 5
Views: 1712
Reputation: 713
Another solution is just adding the delimiters after splitting
String delimiter = "\n"
String[] split = input.split(delimiter);
for(int i = 0; i < split.length; i++){
split[i] += delimiter;
}
Upvotes: 1
Reputation: 285403
I tried using split but that takes away the delimiter. I need the \n to be kept at the end of each line if it exists.
You can still use it and preserve the line break if you use look-ahead or look-behind in your regex. Check out the best regular expressions tutorial that I know of:
Regex Tutorial
Look-Around section of the Regex Tutorial.
For example:
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);
}
}
}
The look-ahead or look-behind (also called "look-around") is non-destructive to the characters they match.
Upvotes: 4
Reputation: 22461
Alternative to @Hovercraft solution with Lookahead assertion:
String[] result = s.split("(?=\n)");
Further details about Lookahead in http://www.regular-expressions.info/lookaround.html
Upvotes: 4