3.6 Java 11新特性:新增的String函数
在新发布的JDK 11中,新增了6个字符串函数。下面介绍各个字符串函数。
知识点讲解:
❑ String.repeat(int)
函数String.repeat(int)的功能是根据int参数的值重复String。
❑ String.lines()
函数String.lines()的功能是返回从该字符串中提取的行,由行终止符分隔。行要么是零个或多个字符的序列,后面跟着一个行结束符;要么是一个或多个字符的序列,后面是字符串的结尾。一行不包括行终止符。在Java程序中,使用函数String.lines()返回的流包含该字符串中出现的行的顺序。
❑ String.strip()
函数String.strip()的功能是返回一个字符串,该字符串的值为该字符串,其中所有前导和尾部空白均被删除。如果该String对象表示空字符串,或者如果该字符串中的所有代码点是空白的,则返回一个空字符串。否则,返回该字符串的子字符串,该字符串从第一个不是空白的代码点开始,直到最后一个不是空白的代码点,并包括最后一个不是空白的代码点。在Java程序中,开发者可以使用此函数去除字符串开头和结尾的空白。
❑ String.stripLeading()
函数String.stripLeading()的功能是返回一个字符串,其值为该字符串,并且删除字符串前面的所有空白。如果该String对象表示空字符串,或者如果该字符串中的所有代码点是空白的,则返回空字符串。
❑ String.stripTrailing()
函数String.stripTrailing()的功能是返回一个字符串,其值为该字符串,并且删除字符串后面的所有空白。如果该String对象表示空字符串,或者如果该字符串中的所有代码点是空白的,则返回空字符串。
❑ String.isBlank()
函数String.isBlank()的功能是判断字符串是否为空或仅包含空格。如果字符串为空或仅包含空格则返回true;否则,返回false。
下面的实例演示了使用上述Java 11新增字符串函数的过程。
实例3-24
使用Java 11新增字符串函数
源码路径:daima\3\Example.java
实例文件Example.java的主要实现代码如下所示。
import java.util.stream.Collectors; public class Example { /** * 写入文本标题 */ private static void writeHeader(final String headerText) { final String headerSeparator = "=".repeat(headerText.length() + 4); System.out.println("\n" + headerSeparator); System.out.println(headerText); System.out.println(headerSeparator); } public static void demonstrateStringLines() { String originalString = "Hello\nWorld\n123"; String stringWithoutLineSeparators = originalString.replaceAll("\\n", "\\\\n"); writeHeader("String.lines() on '" + stringWithoutLineSeparators + "'"); originalString.lines(); } public static void demonstrateStringStrip() { String originalString = " biezhi.me 23333 "; writeHeader("String.strip() on '" + originalString + "'"); System.out.println("'" + originalString.strip() + "'"); } public static void demonstrateStringStripLeading() { String originalString = " biezhi.me 23333 "; writeHeader("String.stripLeading() on '" + originalString + "'"); System.out.println("'" + originalString.stripLeading() + "'"); } public static void demonstrateStringStripTrailing() { String originalString = " biezhi.me 23333 "; writeHeader("String.stripTrailing() on '" + originalString + "'"); System.out.println("'" + originalString.stripTrailing() + "'"); } public static void demonstrateStringIsBlank() { writeHeader("String.isBlank()"); String emptyString = ""; System.out.println("空字符串 -> " + emptyString.isBlank()); String onlyLineSeparator = System.getProperty("line.separator"); System.out.println("换行符 -> " + onlyLineSeparator.isBlank()); String tabOnly = "\t"; System.out.println("Tab 制表符 -> " + tabOnly.isBlank()); String spacesOnly = " "; System.out.println("空格 -> " + spacesOnly.isBlank()); } public static void lines() { writeHeader("String.lines()"); String str = "Hello \n World, I, m\nbiezhi."; System.out.println(str.lines().collect(Collectors.toList())); } public static void main(String[] args) { writeHeader("User-Agent\tMozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5)"); demonstrateStringLines(); demonstrateStringStrip(); demonstrateStringStripLeading(); demonstrateStringStripTrailing(); demonstrateStringIsBlank(); lines(); } }
执行后会输出:
============================================================== User-Agent Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) ============================================================== ========================================= String.lines() on 'Hello\nWorld\n123' ========================================= ============================================ String.strip() on ' biezhi.me 23333 ' ============================================ 'biezhi.me 23333' =================================================== String.stripLeading() on ' biezhi.me 23333 ' =================================================== 'biezhi.me 23333 ' ==================================================== String.stripTrailing() on ' biezhi.me 23333 ' ==================================================== ' biezhi.me 23333' ==================== String.isBlank() ==================== 空字符串 -> true 换行符 -> true Tab 制表符 -> true 空格 -> true ================== String.lines() ================== [Hello , World, I, m, biezhi.]