leftso 1558 0 2018-07-10 09:48:25

文章位置:左搜> 编程技术> 正文
可用的早期访问JDK 11版本已经包含这些新方法,我使用其中一个早期访问版本来演示这篇文章。
我正在使用OpenJDK JDK 11 Early Access Build 20来编译和运行本文中显示的示例。
查看jdk版本为jdk11
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 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());
}
执行此代码的示例显示在下一个屏幕快照中。
Stringblank

其代码如上所示的一些方法称为“辅助”方法,可以在GitHub上看到。
添加到JDK 11的方法String是一些小的补充,但是会使与Java相关的某些“表示”任务String比过去更容易,并减少对第三方库的需求。
 
编程技术 java String JDK11