隨著程式語言的發展,幾乎所有語言都有字串模板的功能了,例如 JavaScript:
C#:
Java 21 在 2023 年 9 月 19 日發布, 不知道等了多少年,終於輪到 Java 了有字串模板(String Templates)了!不過此功能目前還是在預覽版...
幾種以前的方式和新的字串模板的方式比較:
字串模板前面的 STR 的命名空間:
還記得在 Java 13 中加入的文字區塊(Text Blocks)功能嗎?就是能夠方便輸入多行字串(multiline strings)的那個:
也可以和字串模板搭配使用:
超級方便!
參考資料:
OpenJDK - JEP 430: String Templates (Preview)
Oracle.docs - Interface StringTemplate
Java Magazine - Java 21 is here: Virtual threads, string templates, and more
Java Magazine - Text Blocks Come to Java
let id = 1;
let name = "小明";
console.log(`id: ${id}, name: ${name}`); // id: 1, name: 小明
C#:
int id = 1;
string name = "小明";
Console.WriteLine($"id:{id}, name:{name}"); // id:1, name:小明
Java 21 在 2023 年 9 月 19 日發布, 不知道等了多少年,終於輪到 Java 了有字串模板(String Templates)了!不過此功能目前還是在預覽版...
幾種以前的方式和新的字串模板的方式比較:
int id = 1;
String name = "小明";
System.out.println("id: " + id + ", name: " + name);
System.out.println(new StringBuilder().append("id: ").append(id).append(", name: ").append(name));
System.out.println(String.format("id: %d, name: %s", id, name));
System.out.printf("id: %d, name: %s%n", id, name);
System.out.println(STR."id: \{id}, name: \{name}");
// id: 1, name: 小明
字串模板前面的 STR 的命名空間:
import static java.lang.StringTemplate.STR;
還記得在 Java 13 中加入的文字區塊(Text Blocks)功能嗎?就是能夠方便輸入多行字串(multiline strings)的那個:
String str = """
{
"id": 1,
"name": "小明"
}
""";
System.out.println(str);
/*
{
"id": 1,
"name": "小明"
}
*/
也可以和字串模板搭配使用:
String str = STR."""
{
"id": \{id},
"name": "\{name}"
}
""";
System.out.println(str);
/*
{
"id": 1,
"name": "小明"
}
*/
超級方便!
參考資料:
OpenJDK - JEP 430: String Templates (Preview)
Oracle.docs - Interface StringTemplate
Java Magazine - Java 21 is here: Virtual threads, string templates, and more
Java Magazine - Text Blocks Come to Java
留言
張貼留言
如果有任何問題、建議、想說的話或文章題目推薦,都歡迎留言或來信: a@ruyut.com