可用的早期访问JDK 11版本已经包含这些新方法,我使用其中一个早期访问版本来演示这篇文章。
我正在使用OpenJDK JDK 11 Early Access Build 20来编译和运行本文中显示的示例。
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
在其它被称为由它的行结束,并返回一个Stream
的Strings
那些行结束所划分。
用于 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.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
比过去更容易,并减少对第三方库的需求。
https://www.leftso.com/article/464.html