Java12在String类上引入了一些新的方法,这些新方法为字符串操作提供了更多的便利和灵活性。
indent()方法
indent()方法允许你对字符串进行缩进操作。、
通过传入一个整数n作为参数,可以将字符串缩进n个字符的宽度。如果n为负数,则相当于进行反向缩进(即向字符串左侧移动)。
- n > 0:在每行的开头插入空格。
- n < 0:删除每行开头的空格。
- n < 0和n < 可用空格:删除每行的所有前导空格。
- n = 0:没有变化。
String.indent()方法的使用如下:
package com.morris.java12;
/**
* String.indent()方法的使用
*/
public class StringIndentDemo {
public static void main(String[] args) {
String text = " a\n b\n c\n";
System.out.println(text.indent(2));
System.out.println("--------");
System.out.println(text.indent(-2));
}
}
运行结果如下:
a
b
c
--------
a
b
c
String.indent()方法的源码如下:
public String indent(int n) {
if (isEmpty()) {
return "";
}
Stream<String> stream = lines();
if (n > 0) {
final String spaces = " ".repeat(n);
stream = stream.map(s -> spaces + s);
} else if (n == Integer.MIN_VALUE) {
stream = stream.map(s -> s.stripLeading());
} else if (n < 0) {
stream = stream.map(s -> s.substring(Math.min(-n, s.indexOfNonWhitespace())));
}
return stream.collect(Collectors.joining("\n", "", "\n"));
}
transform()方法
transform()方法允许你通过函数式接口对字符串进行转换。
传入一个Function<? super String, ? extends R>
类型的Lambda表达式,该表达式接受一个String作为输入,并返回转换后的结果。
这种方法提供了一种链式操作的方式,可以连续对字符串进行多次转换。
transform()方法的使用如下:
package com.morris.java12;
/**
* String.transform()方法的使用
*/
public class StringTransformDemo {
public static void main(String[] args) {
String transform = "hello".transform(s -> s + " world").transform(String::toUpperCase);
System.out.println(transform); // HELLO WORLD
}
}