Java 开发从入门到精通(第2版)
上QQ阅读APP看书,第一时间看更新

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.]