Java 11字串API有更新
即將釋出的新LTS JDK 11版本帶來一些有趣的String API更新。
同樣適用於可重複空的字串:
可能很容易認為它只是依賴於底層的StringBuilder,但實際情況並非如此。實際這種實現更具資源效率。
另外,我們可以將操作範圍縮小到尾隨/前導空格:
但是,可能會問自己這個與String#trim有何不同?
實際上,String#strip是一種現代的Unicode 識別替代方案,它依賴於與 String#isBlank 相同的對空白的定義。
真正酷的是,不是拆分String並將其轉換為Stream,而是實現了專門的Spliterators(一個用於拉丁語,另外一個用於UTF-16字串),這使得可以保持惰性。
repeat()方法
String API的最酷新增之一是repeat()方法......它允許將String以一定次數與自身連線:
var string =“foo bar”;
var result = string.repeat(2); // foo bar foo bar
如果你嘗試重複一次0次字串,你將總是得到一個空字串:
@Test void shouldRepeatZeroTimes() { var string = "foo"; var result = string.repeat(0); assertThat(result).isEqualTo(""); } <p class="indent"> |
同樣適用於可重複空的字串:
@Test void shouldRepeatEmpty() { var string = ""; var result = string.repeat(Integer.MAX_VALUE); assertThat(result).isEqualTo(""); } <p class="indent"> |
可能很容易認為它只是依賴於底層的StringBuilder,但實際情況並非如此。實際這種實現更具資源效率。
isBlank()
這是非常簡單的 - 現在我們可以檢查String例項是空的還是包含空格(由Character#isWhitespace(int)定義 ):
var result = " ".isBlank(); // true
strip()
我們現在可以輕鬆地從每個String中刪除所有前導和尾隨空格:
assertThat(" f oo ".strip()).isEqualTo("f oo");(" f oo ".strip()).isEqualTo("f oo"); <p class="indent"> |
另外,我們可以將操作範圍縮小到尾隨/前導空格:
assertThat(" f oo ".stripLeading()).isEqualTo("f oo ");(" f oo ".stripLeading()).isEqualTo("f oo "); assertThat(" f oo ".stripTrailing()).isEqualTo(" f oo");(" f oo ".stripTrailing()).isEqualTo(" f oo"); <p class="indent"> |
但是,可能會問自己這個與String#trim有何不同?
實際上,String#strip是一種現代的Unicode 識別替代方案,它依賴於與 String#isBlank 相同的對空白的定義。
lines方法
使用這種新方法,我們可以輕鬆地將String例項拆分為單獨行的Stream <String>:
"foo\nbar".lines().forEach(System.out::println);.lines().forEach(System.out::println); // foo// foo // bar// bar <p class="indent"> |
真正酷的是,不是拆分String並將其轉換為Stream,而是實現了專門的Spliterators(一個用於拉丁語,另外一個用於UTF-16字串),這使得可以保持惰性。
相關文章
- Java on Visual Studio Code的更新 – 2021年11月Java
- 為什麼react-redux沒有更新hooks APIReactReduxHookAPI
- Java 17 與 Java 11 相比有什麼變化?Java
- JavaScript字串API彙總JavaScript字串API
- java字串Java字串
- 羞,Java 字串拼接竟然有這麼多姿勢Java字串
- JavaScript中常用的字串APIJavaScript字串API
- 有點長的 Java API 設計清單JavaAPI
- Java11中的新功能和API詳解系列1JavaAPI
- Java™ 教程(字串)Java字串
- java------字串Java字串
- 使用 Java 11 HTTP Client API 實現 HTTP/2 伺服器推送JavaHTTPclientAPI伺服器
- Java程式設計師常用的11個API,趕快收藏吧!Java程式設計師API
- JAVA字串轉日期或日期轉字串Java字串
- java 11Java
- 1 Day11--API1API
- Java-string字串Java字串
- leetcode:字串相乘(java)LeetCode字串Java
- Java中的字串Java字串
- java字串常用方法Java字串
- 上升下降字串java字串Java
- .net api介面接收字串或者xmlAPI字串XML
- javascript字串常用api使用匯總(二)JavaScript字串API
- ElasticSearch—— Java APIElasticsearchJavaAPI
- Java 反射 APIJava反射API
- Java -fastjson apiJavaASTJSONAPI
- java常用APIJavaAPI
- Java 日期 APIJavaAPI
- Java™ 教程(比較字串和字串的部分)Java字串
- Java 11 教程Java
- Java基礎系列—字串Java字串
- 開源API測試工具 Hitchhiker v0.4更新 – 沒有做不到,只有想不到API
- Java012-APIJavaAPI
- ElasticSearch Java API使用ElasticsearchJavaAPI
- ZooKeeper 使用 Java APIJavaAPI
- java的runtime APIJavaAPI
- Java API操作ESJavaAPI
- EasyExcel Java API 使用ExcelJavaAPI