From d6d32248adf900318cda2bf3de3176381f6ca6fd Mon Sep 17 00:00:00 2001 From: Mohammad Ali Nikseresht Date: Tue, 17 Jul 2018 14:12:51 -0400 Subject: [PATCH] Add implementation of String.lines() (jdk11 only) This change adds an implementation of String.lines(), which returns a lazily supplied Stream of Strings broken up by line terminators. Signed-off-by: Mohammad Ali Nikseresht --- .../share/classes/java/lang/String.java | 26 +++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/jcl/src/java.base/share/classes/java/lang/String.java b/jcl/src/java.base/share/classes/java/lang/String.java index 85c16f920a2..f20f92c42fe 100644 --- a/jcl/src/java.base/share/classes/java/lang/String.java +++ b/jcl/src/java.base/share/classes/java/lang/String.java @@ -42,6 +42,10 @@ import sun.misc.Unsafe; /*[ENDIF] Sidecar19-SE*/ +/*[IF Java11]*/ +import java.util.stream.Stream; +/*[ENDIF] Java11*/ + /** * Strings are objects which represent immutable arrays of characters. * @@ -2583,8 +2587,26 @@ public boolean isBlank() { return index >= lengthInternal(); } -/*[ENDIF]*/ - + + /** + * Returns a stream of substrings extracted from this string partitioned by line terminators. + * + * Line terminators recognized are line feed "\n", carriage return "\r", and carriage return + * followed by line feed "\r\n". + * + * @return the stream of this string's substrings partitioned by line terminators + * + * @since 11 + */ + public Stream lines() { + if (enableCompression && (null == compressionFlag || coder == LATIN1)) { + return StringLatin1.lines(value); + } else { + return StringUTF16.lines(value); + } + } +/*[ENDIF] Java11*/ + /** * Copies a range of characters into a new String. *