JDK 11 String 新方法使用教程

JDK 11 String 新方法使用教程

可用的早期访问JDK 11版本已经包含这些新方法,我使用其中一个早期访问版本来演示这篇文章。


我正在使用OpenJDK JDK 11 Early Access Build 20来编译和运行本文中显示的示例。
jdk11版本查看
String通过OpenJDK JDK 11 Early Access Build 20在本文中演示的为JDK 11 添加的六种方法是:

  • String.repeat(int)
  • String.lines()
  • String.strip()
  • String.stripLeading()
  • String.stripTrailing()
  • String.isBlank()

本文中演示的示例的源代码可在GitHub上获得。


String.repeat(INT)


String.repeat(int)由于在Groovy中体验了这一功能,因此该方法提供了我希望在Java中看到的便捷功能。顾名思义,这种方法重复String它的运行次数与int参数提供的次数相同。在生成简单的演示并将其用于本文的示例时,我将来可能经常使用此方法。下一个代码清单演示了如何使用它String.repeat(int)来轻松生成演示输出的标题分隔符。


用于 String.repeat(int)

/**
 * Write provided {@code String} in header. Note that this
 * implementation uses {@code String.repeat(int)}.
 *
 * @param headerText Title of header.
 */
private static void writeHeader(final String headerText)
{
   final String headerSeparator = "=".repeat(headerText.length()+4);
   out.println("\n" + headerSeparator);
   out.println("= " + headerText + " =");
   out.println(headerSeparator);
}

writeHeader(String)方法用于String.repeat(int)从“ =”字符容易地生成“标题分隔符”行足以覆盖所提供的headerText长度加上4个附加字符,以允许=在“标题文本”的每一侧上额外的“ ”和额外空间。该writeHeader(String)方法由本文中的所有其他演示示例使用,因此将通过这些示例进行演示。


String.lines()


String.lines()方法拆分String在其它被称为由它的行结束,并返回一个StreamStrings那些行结束所划分。


用于 String.lines()

/**
 * Demonstrate method {@code String.lines()} added with JDK 11.
 */
public static void demonstrateStringLines()
{
   final String originalString = prepareStringWithLineTerminators();
   final String stringWithoutLineSeparators
      = originalString.replaceAll("\\n", "\\\\n");
   writeHeader("String.lines() on '"  + stringWithoutLineSeparators  + "'");
   final Stream<String> strings = originalString.lines();
   strings.forEach(out::println);
}

示例输出显示在下一个屏幕快照中。
String lines

String.strip()/ String.stripLeading()/ String.stripTrailing()
String.strip()String.stripLeading()String.stripTrailing()方法修剪空白[由以下方法测定Character.isWhiteSpace() ]关闭任一前,后,或前部和后部的目标String
String.strip()/ String.stripLeading()/ String.stripTrailing()的使用
 

/**
 * Demonstrate method {@code String.strip()} added with JDK 11.
 */
public static void demonstrateStringStrip()
{
   final String originalString = prepareStringSurroundedBySpaces();
   writeHeader("String.strip() on '" + originalString + "'");
   out.println("'" + originalString.strip() + "'");
}

/**
 * Demonstrate method {@code String.stripLeading()} added with JDK 11.
 */
public static void demonstrateStringStripLeading()
{
   final String originalString = prepareStringSurroundedBySpaces();
   writeHeader("String.stripLeading() on '" + originalString + "'");
   out.println("'" + originalString.stripLeading() + "'");
}

/**
 * Demonstrate method {@code String.stripTrailing()} added with JDK 11.
 */
public static void demonstrateStringStripTrailing()
{
   final String originalString = prepareStringSurroundedBySpaces();
   writeHeader("String.stripTrailing() on '" + originalString + "'");
   out.println("'" + originalString.stripTrailing() + "'");
}

执行上面的代码时,输​​出看起来像下一个屏幕快照中显示的那样。

String.isBlank()


String.isBlank()方法指示目标String是否为空或仅包含由Character.isWhitespace(int)确定的空格字符。


String.isBlank()的使用

/**
 * Demonstrate method {@code String.isBlank()} added with JDK 11.
 */
public static void demonstrateStringIsBlank()
{
   writeHeader("String.isBlank()");
   final String emptyString = "";
   out.println("Empty String -> " + emptyString.isBlank());
   final String onlyLineSeparator = System.getProperty("line.separator");
   out.println("Line Separator Only -> " + onlyLineSeparator.isBlank());
   final String tabOnly = "\t";
   out.println("Tab Only -> " + tabOnly.isBlank());
   final String spacesOnly = "   ";
   out.println("Spaces Only -> " + spacesOnly.isBlank());
}

执行此代码的示例显示在下一个屏幕快照中。



其代码如上所示的一些方法称为“辅助”方法,可以在GitHub上看到。


添加到JDK 11的方法String是一些小的补充,但是会使与Java相关的某些“表示”任务String比过去更容易,并减少对第三方库的需求。

 

JDK 11 String 新方法使用教程

相关文章:

你感兴趣的文章:

标签云: