Java文本块完美方法:告别多行字符串的噩梦


你们肯定用过String变量来存一些跨越多行的值吧?比如:
  • 给AI的提示词
  • JSON数据
  • HTML/XML代码
  • 程序代码片段

传统方式的痛苦
想象一下你要存下面这段JSON:

json
{
    "name": "王小明"
   
"爱好": "#打篮球",
   
"座右铭": "每天进步一点点"
}

用老方法得写成这样:

java

String myJson = "{\n" +
               
"    \"name\": \"王小明\"\n" +
               
"    \"爱好\": \"#打篮球\",\n" +
               
"    \"座右铭\": \"每天进步一点点\"\n" +
               
"}";

简直要命啊!看到没:

  • 每行都要用+连接
  • 所有引号都要用\转义
  • 还要手动加\n换行

代码丑到亲妈都不认识

而且你们发现没?上面的JSON其实少了个逗号!但在这一团乱麻里根本看不出来!

救星来了:文本块(Text Blocks)
Java 15开始有了文本块,现在可以这样写:

java
String myJson = """
                {
                   
"name": "王小明"
                   
"爱好": "#打篮球",
                   
"座右铭": "每天进步一点点"
                }
""";

是不是清爽多了?就像直接复制粘贴一样简单!

文本块使用指南
基本规则

  • 用三个引号"""开头和结尾
  • 开头引号后必须换行
  • 自动保留缩进格式

空白字符处理

  • 前导空格:以最左边的非空字符为准
  • 末尾空格:默认会自动去掉
  • 想保留空格?用\s标记

续行技巧
如果不想在字符串里换行(比如写超长URL),可以在行尾加\:

java
String url = """
        https:
//www.example.com/\
        page1/\
        page2
""";

实际应用场景
1. 存储JSON/XML

再也不用担心漏逗号、少引号了!

2. HTML模板
java

String html = """
    <div class=
"card">
        <h1>你好,{name}!</h1>
        <p>今天是{date}</p>
    </div>
""";

3. SQL查询
java

String query = """
    SELECT name, age 
    FROM students
    WHERE score > 90
    ORDER BY age DESC
""";

4. 多行日志消息
java

logger.error("""
    订单处理失败!
    订单ID: {}
    错误原因: {}
    时间: {}
""", orderId, reason, LocalDateTime.now());

5. 有趣的ASCII艺术
java

String art = """
    ╭━━╮╱╱╱╱╱╱╱╱╱╱╱╱╭╮
    ┃╭╮┃╱╱╱╱╱╱╱╱╱╱╱╱┃┃
    ┃╰╯╰┳━━┳╮╭┳━━┳━╯┃
    ┃╭━╮┃╭╮┃╰╯┃┃━┫╭╮┃
    ┃╰━╯┃╰╯┃┃┃┃┃━┫╰╯┃
    ╰━━━┻━━┻┻┻┻━━┻━━╯
""";

为什么这么好用?
代码更干净:不用一堆+和\n了
更易读:直接看到最终字符串的样子
少犯错:容易发现语法错误
智能提示:IDE能识别JSON/HTML语法

迁移小贴士
如果你的项目还在用老Java版本:

  • 升级到Java 15+
  • 用IDE的"Convert to Text Block"功能一键转换
  • 享受写代码的快乐!

文本块就像是Java送给程序员的一份礼物,让我们处理多行字符串时不再抓狂。赶紧用起来吧!