V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
lxk11153
V2EX  ›  Java

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

  •  1
     
  •   lxk11153 · Jun 17, 2020 · 5847 views
    This topic created in 2142 days ago, the information mentioned may be changed or developed.
    `In JavaScript this is
     legal. "233"`
    
    Supplement 1  ·  Jun 17, 2020
    ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
    Object obj = engine.eval("""
                             function hello() {
                                 print('"Hello, world"');
                             }
                             
                             hello();
                             """);
    
    17 replies    2020-06-17 14:41:06 +08:00
    GM
        1
    GM  
       Jun 17, 2020
    没有。
    Java 14 支持有多行字符串,但是根据现在的尿性,11 普及还远,大概率五年后也享受不到这种语法糖。
    xeathen
        2
    xeathen  
       Jun 17, 2020
    jdk13 支持文本块了。
    ChanKc
        3
    ChanKc  
       Jun 17, 2020
    xeathen
        4
    xeathen  
       Jun 17, 2020
    @GM #1 我公司已经在用 JDK14 了哈哈,小公司就是奔放
    lxk11153
        5
    lxk11153  
    OP
       Jun 17, 2020
    @xeathen #2
    @ChanKc #3 文本块里的双引号需要转义吗?
    auin
        6
    auin  
       Jun 17, 2020
    看示例:

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

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

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

    abc

    /*doc*_/
    efg

    EOF*/;
    ```

    扔给 javac 编译前,先调用一遍自己的预编译工具,编译自己定义的语法为标准 java 语法
    reeco
        9
    reeco  
       Jun 17, 2020
    没有,直接换 kotlin 吧
    HENQIGUAI
        10
    HENQIGUAI  
       Jun 17, 2020
    Rwing
        11
    Rwing  
       Jun 17, 2020
    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
       Jun 17, 2020
    @Rwing #10
    @HENQIGUAI #11
    @reeco #9 这就是编程语言鄙视链吗? i 了 i 了
    Rwing
        13
    Rwing  
       Jun 17, 2020
    @lxk11153 不敢不敢,在中国谁敢鄙视 java 啊,javaer 说句话,中国 it 行业都抖三抖
    zhaorunze
        14
    zhaorunze  
       Jun 17, 2020
    语言只是工具,hellow word 一百种简写方法,也没啥用
    zhuweiyou
        15
    zhuweiyou  
       Jun 17, 2020
    不支持。
    写个模板文件来 render 吧
    GM
        16
    GM  
       Jun 17, 2020
    @xeathen 咦?我记得是 14 啊?记错了?
    Mistwave
        17
    Mistwave  
       Jun 17, 2020 via iPhone
    Scala 欢迎你
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1244 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 17:36 · PVG 01:36 · LAX 10:36 · JFK 13:36
    ♥ Do have faith in what you're doing.