Java文本块
文本塊是JDK增強建議( JEP 355 ),可以在JDK 13和14中作為預覽語言功能使用。它計劃在JDK 15中成為永久性功能。文本塊是跨越多行并不需要的String文字。對于大多數轉義序列。
動機
在標準Java字符串中嵌入XML,JSON或SQL之類的格式會變得很煩人。 例如,由于必須進行轉義,因此只有兩個鍵的簡單JSON代碼片段在Java中幾乎無法讀取:
String json = "{\n" + "\"name\": \"john\",\n" + "\"age\": 42\n" + "}" ;文本塊進行救援
使用新的文本塊功能,我們可以將代碼重寫為:
String text = "" " { "name" : "john" , "age" : "42" } "" ";使用三引號(“””)打開(和關閉)文本塊。 文本從下一行開始。 打開文本塊后,該行的其余部分需要保持空白。
如果我們將此字符串打印到控制臺,我們將看到:
{ "name" : "john" , "age" : "42" }您可能已經注意到,左側的凹痕已被去除。 這是因為文本塊的處理分為三個步驟:
- 行終止符被標準化為LF字符。 這樣可以避免不同平臺(例如Windows和Unix)之間的問題。
- 偶然的前導空格和所有尾隨空格均被刪除。 偶然的前導空格是通過找到所有行的前導空格的公共數量來確定的。
- 轉義序列被解釋。 文本塊可以包含與標準字符串相同的轉義序列(例如\ t或\ n)。 請注意,已經添加了兩個新的轉義序列:\ s用于顯式空間,\ <eol>作為連續指示符(稍后在\ <eol>上有更多介紹)。
如果我們明確需要前導空格,則可以使用indent()方法:
String text = "" " { "name" : "john" , "age" : "42" } "" ".indent( 4 );這會在我們的JSON代碼段中添加4個額外的前導空格。 所以看起來像這樣:
{ "name" : "john" , "age" : "42" }或者,我們可以從結尾的三引號中刪除4個前導空格以產生相同的結果:
String text = "" " { "name" : "john" , "age" : "42" } "" "; // <-- moving this 4 spaces to the left produces 4 additional leading spaces新的\ <eol>轉義序列
使用新的\ <eol>轉義序列,我們可以將單行的內容拆分為多行,而無需創建實際的行終止符。
String text = "" " 1 2 \ 3 \ 4 5 "" ";結果是:
1 2 3 4 5轉義三引號
如果我們需要在文本塊中寫入三引號,則只需要對第一引號進行轉義:
String text = "" " Java text blocks start with \ "" " Java text blocks start with \ "" ";這將產生:
Java text blocks start with "" " Java text blocks start with摘要
文本塊是Java編程語言的不錯的補充。 通過支持多行,它們消除了對雙引號轉義的需要,可以大大提高諸如JSON,XML或SQL之類的嵌入式字符串的可讀性。
建議進一步閱讀:Brian Goetz的“ 文本塊” 。
與往常一樣,您可以在GitHub上找到所有提供的示例。
翻譯自: https://www.javacodegeeks.com/2020/06/java-text-blocks-2.html
總結
- 上一篇: 使用SoapUI调用不同的安全WCF S
- 下一篇: linux 进程启动时间(linux 进