【java12】java12新特性之String的新API

发布于:2024-07-03 ⋅ 阅读:(14) ⋅ 点赞:(0)

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
    }
}

网站公告

今日签到

点亮在社区的每一天
去签到