Java 21引入的字符串模版,改变编程规则!


大家好呀,java21也出来好一阵子了,大家对java21的特性了解多少呢,今天就给大家揭开java21神秘的面纱。
常用的有以下几点:

  1. 单行模版表达式
  2. 多行模版表达式
  3. STR模版处理器的用法
  4. RAW的使用
  5. FMT的使用
  6. 自定义模版

话不多说,开始代码:

单行模版表达式

单行模版表达式是最简单的模版使用了,直接看代码:

/***
     * @Description:简单模板使用
     * @return: java.lang.String
     * @Author: zyt
     * @Date 2023-12-02 11:17
     */
    public static String simpleStr () {
        String name = "demo之家";
        return STR."my name is \{name}" ;
    }

注意上述代码通过STR这个模版处理器将我的姓名打印出来,{name}称之为内嵌表达式,以下是运行的结果:
在这里插入图片描述

多行模版表达式

/***
     * @Description:多行模版
     * @return: java.lang.String
     * @Author: zyt
     * @Date 2023-12-02 21:01
     */
    public static String multiLineStr () {
        return STR."""
    <html>
    <body>
      这是测试
    </body>
    </html>
    """;
    }

结果如下:
在这里插入图片描述
这样子的字符串看起来是不是舒服多了,这要是以前,一顿字符串拼接,老难受了,不仅html可以,还可以是json这样的数据格式哦。

public static String jsonStr(String id,String name) {
        return STR."""
                "id":"\{id}",
                "name":"\{name}"
                """;
    }

在这里插入图片描述

STR模版处理器的用法

数学计算

/***
     * @Description:进行数学计算
     * @return: java.lang.String
     * @Author: zyt
     * @Date 2023-12-02 21:44
     */
    public static String mathStr() {
        var a = 10;
        var b = 20;
        return STR."\{a}+\{b}=\{a+b}";
    }

在这里插入图片描述

调用方法

/***
     * @Description:字符串模板中调用方法
     * @return: java.lang.String
     * @Author: zyt
     * @Date 2023-12-02 21:51
     */
    public static String useMethodStr() {
        return STR."my name is \{test()}";
    }
	private static String test(){
        return "demo之家";
    }

在这里插入图片描述

RAW的使用

RAW和STR的区别主要就是RAW返回的是StringTemplate,而STR直接返回的是String类型。

public static String rowStr() {
        var name = "demo之家";
        StringTemplate st = RAW."my name is \{name}.";
        return STR.process(st);
    }

FMT的使用

FMT与STR的区别是FMT提供了格式化处理,同样提供了插值功能。

public static String FMTstr(int x,int y) {
        return FMT. "%5d\{ x } + %50d\{ y } = %5d\{ x + y }" ;
    }

在这里插入图片描述
上述代码中,我将y的间距放大了些,小伙伴们可以更清楚的看到效果。

自定义模版

除了我们官方提供的这些模版处理器,我们一定会有自己的需求,那么我们可不可以自定义模版处理器呢,当然可以,下面看代码:

/***
     * @Description:这里使用了自定义模版
     * @return: java.lang.String
     * @Author: zyt
     * @Date 2023-12-03 16:13
     */
    public static String strTemplateCustomize() {
        var INTER = StringTemplate.Processor.of((StringTemplate st) -> {
            System.out.println("使用自定义模版");
            StringBuilder sb = new StringBuilder();
            Iterator<String> fragIter = st.fragments().iterator();
            for (Object value : st.values()) {
                sb.append(fragIter.next());
                sb.append(value);
            }
            sb.append(fragIter.next());
            return sb.toString();
        });
        int x = 10, y = 20;
        return INTER."\{x} 加 \{y} 等于 \{x + y}" ;
    }

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值