java 的语法特性真的落后其他语言很多,下面是不同语言的字符串模板语法:
JavaScript `${x} plus ${y} equals ${x + y}`
C# $"{x} plus {y} equals {x + y}"
Visual Basic $"{x} plus {y} equals {x + y}"
Scala f"$x%d plus $y%d equals ${x + y}%d"
Python f"{x} plus {y} equals {x + y}"
Ruby "#{x} plus #{y} equals #{x + y}"
Groovy "$x plus $y equals ${x + y}"
Kotlin "$x plus $y equals ${x + y}"
Swift "\(x) plus \(y) equals \(x + y)"
n 年过去了 java 还是手动拼接的方式,JEP 430 就是为了解决这个问题,不过这个特效 preview 之后还要几年才能稳定。之后 java 会以 STR.
语法支持字符串模板:
String name = "Joan";
String info = STR."My name is \{name}";
assert info.equals("My name is Joan"); // true
配合长字符串语法的写法:
String title = "My Web Page";
String text = "Hello, world";
String html = STR."""
<html>
<head>
<title>\{title}</title>
</head>
<body>
<p>\{text}</p>
</body>
</html>
""";
详细特性可以看这个:JEP 430: String Templates (Preview)