V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
lxk11153
V2EX  ›  Java

Java 里面有没有类似 es6 的模板字符串语法?

  •  1
     
  •   lxk11153 · 2020-06-17 13:00:55 +08:00 · 5068 次点击
    这是一个创建于 1402 天前的主题,其中的信息可能已经有所发展或是发生改变。
    `In JavaScript this is
     legal. "233"`
    
    第 1 条附言  ·  2020-06-17 14:32:20 +08:00
    ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
    Object obj = engine.eval("""
                             function hello() {
                                 print('"Hello, world"');
                             }
                             
                             hello();
                             """);
    
    17 条回复    2020-06-17 14:41:06 +08:00
    GM
        1
    GM  
       2020-06-17 13:04:51 +08:00
    没有。
    Java 14 支持有多行字符串,但是根据现在的尿性,11 普及还远,大概率五年后也享受不到这种语法糖。
    xeathen
        2
    xeathen  
       2020-06-17 13:05:04 +08:00
    jdk13 支持文本块了。
    ChanKc
        3
    ChanKc  
       2020-06-17 13:05:08 +08:00
    xeathen
        4
    xeathen  
       2020-06-17 13:06:24 +08:00
    @GM #1 我公司已经在用 JDK14 了哈哈,小公司就是奔放
    lxk11153
        5
    lxk11153  
    OP
       2020-06-17 13:13:28 +08:00
    @xeathen #2
    @ChanKc #3 文本块里的双引号需要转义吗?
    liuxey
        6
    liuxey  
       2020-06-17 13:16:55 +08:00
    看示例:

    ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
    Object obj = engine.eval("""
    function hello() {
    print('"Hello, world"');
    }

    hello();
    """);
    ChanKc
        7
    ChanKc  
       2020-06-17 13:18:12 +08:00
    @lxk11153 https://openjdk.java.net/jeps/378
    完整阅读 escape 相关的部分就好
    xiangyuecn
        8
    xiangyuecn  
       2020-06-17 13:18:38 +08:00
    自己写一个 java 文件的预处理吧,想写什么自定义语法就写什么语法

    比如我就会写:
    ```java
    String text=""/*<<<EOF

    abc

    /*doc*_/
    efg

    EOF*/;
    ```

    扔给 javac 编译前,先调用一遍自己的预编译工具,编译自己定义的语法为标准 java 语法
    reeco
        9
    reeco  
       2020-06-17 13:23:09 +08:00
    没有,直接换 kotlin 吧
    HENQIGUAI
        10
    HENQIGUAI  
       2020-06-17 13:24:40 +08:00
    Rwing
        11
    Rwing  
       2020-06-17 13:26:05 +08:00
    C# 欢迎各位

    string text = $"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now.";

    string query = @"SELECT foo, bar
    FROM table
    WHERE id = 42";
    lxk11153
        12
    lxk11153  
    OP
       2020-06-17 13:27:57 +08:00
    @Rwing #10
    @HENQIGUAI #11
    @reeco #9 这就是编程语言鄙视链吗? i 了 i 了
    Rwing
        13
    Rwing  
       2020-06-17 13:47:26 +08:00
    @lxk11153 不敢不敢,在中国谁敢鄙视 java 啊,javaer 说句话,中国 it 行业都抖三抖
    zhaorunze
        14
    zhaorunze  
       2020-06-17 14:00:40 +08:00
    语言只是工具,hellow word 一百种简写方法,也没啥用
    zhuweiyou
        15
    zhuweiyou  
       2020-06-17 14:10:24 +08:00
    不支持。
    写个模板文件来 render 吧
    GM
        16
    GM  
       2020-06-17 14:28:51 +08:00
    @xeathen 咦?我记得是 14 啊?记错了?
    Mistwave
        17
    Mistwave  
       2020-06-17 14:41:06 +08:00 via iPhone
    Scala 欢迎你
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2283 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 00:58 · PVG 08:58 · LAX 17:58 · JFK 20:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.