日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

怎么知道文本前后空格的字符格式_JDK 14的新特性:文本块Text Blocks

發布時間:2025/3/15 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 怎么知道文本前后空格的字符格式_JDK 14的新特性:文本块Text Blocks 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

說起來,Text Blocks是在JDK13中以第一次預覽版本引入的。現在在JDK14中是第二次預覽版本 JEP 368: Text Blocks。

在我們日常的工作中,有時候需要用到一大段的字符串,這些字符串需要換行,需要排版,需要轉義。在一個文本編輯器中,這當然是非常容易的事情。但是在java代碼中,就是一個噩夢了。

雖然IDE可以自動幫我們加上換行甚至可以對字符串進行拼接。但在java程序眼中,添加的諸多額外的代碼破壞了代碼的美感。是任何一個有潔癖的程序員都無法忍受的。

怎么辦? Text Blocks就是來解救大家的。

舉個例子

我們先來個直觀的例子,然后再分析Text Blocks的特點。

還是舉HTML的例子,如果我們想要打印出帶縮減,有格式的html,傳統方法可以這樣做:

String html = "" + " " + "

Hello, world

" + " " + "";

上面的代碼看著特別別扭,讓我們看看用文本塊方式怎么做:

String html = """

Hello, world

""";

是不是清爽很多,想要立即給文本塊點個贊。

別慌點贊,我們還有更多的東西要討論。

Indentation編排

可能有人又有問題了,文本塊好用是好用,你這輸出結果中,字段前面的空格都去哪了了呀?

這里就要介紹這個概念了:英文名字叫Indentation,中文我把它翻譯為編排。

再看一下上面的代碼,這一次我們把代碼前面的空格以點來表示:

String html = """............................ ..............

Hello, world

.............. ............................""";

Indentation的規則就是以最下面的“”“為界,對每一行都移除相同數量的空格。

上面的代碼輸出:

Hello, world

上面的例子,最下面的”“”剛好在最左邊的位置,如果把“”“向右移動4個空格會發生什么呢?

String html = """............................ ..............

Hello, world

.............. ................................""";

輸出結果:

Hello, world

我們看到輸出結果是不變的,這樣我們又得到一條結論:如果”“”向右移動,則以text block中最左的那一行記錄為準。

如果我們把“”“向左移動四位,就會發現最終的輸出結果每行前面都有四個空格。

這個功能是和String添加的新的String::stripIndent()對于的。

Escaping轉義

還是看一個直觀的例子:

@Test public void useEscape(){ String code = """ " "" sssss保留這行前面的空白 String text = """ 這里展示的是escape的用法! """; 跟大家說個密碼,這一行很長,我準備分行 來寫,哈哈! """; log.info("{}",code); }

輸出結果:

”"" 保留這行前面的空白String text = """ 這里展示的是escape的用法!""";跟大家說個密碼,這一行很長,我準備分行來寫,哈哈!

首先可以看到一個雙引號和兩個雙引號都是不用轉義的,直接寫就行了。三個雙引號就需要轉義了。

另外s表示的是一個空格。在需要的時候可以使用。

在一行結尾直接插入,表示這一行太長了,還沒結束。

注意在Text Block中,不管是windows的回車,換行符還是linux的換行符都會轉義成為換行符。

這個轉義功能也對于了String的新方法translateEscapes()。

formatted格式化

最后介紹一下Text block的格式化,和String的格式化是一樣的,舉個SQL的例子:

@Test public void useMethod(){ String query1 = """ SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB` WHERE `CITY` = '%s' ORDER BY `EMP_ID`, `LAST_NAME`; """; log.info(query1.formatted("我是一個參數")); }

輸出結果:

SELECT `EMP_ID`, `LAST_NAME` FROM `EMPLOYEE_TB`WHERE `CITY` = '我是一個參數'ORDER BY `EMP_ID`, `LAST_NAME`;

上面的例子中,我們使用%s來定義占位符。

總結

雖然Text Block好用,但可惜還是預覽版本,正式版本可能要等JDK15了。

本文作者:flydean程序那些事

本文來源:flydean的博客

歡迎關注我的公眾號:程序那些事,更多精彩等著您!

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的怎么知道文本前后空格的字符格式_JDK 14的新特性:文本块Text Blocks的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。