大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學習攻略 Java培訓 Java培訓教程:Java新的正則表達式功能

Java培訓教程:Java新的正則表達式功能

更新時間:2019-12-20 16:14:57 來源:動力節點 瀏覽2845次

Java 9中的JDK分為模塊。人們可以合理地期望有一個新的模塊用于正則表達式處理包和類。其實沒有。該模塊java.base是所有其他模塊默認依賴的默認模塊,因此導出的軟件包的類始終在Java應用程序中可用。正則表達式包java.util.regex由此模塊導出。這使得開發變得更簡單:如果我們要在代碼中使用正則表達式,則不需要明確地“要求”一個模塊。似乎正則表達式對于Java包含在基本模塊中是至關重要的。

Java培訓教程:Java新的正則表達式功能

  正則表達式類

  該包java.util.regex包含類

  MatchResult

  Matcher

  Pattern 和

  PatternSyntaxException

  改變API的唯一類是Matcher。

  班級比賽中的變化

  該課程Matcher增加了五種新方法。其中四個是已經存在的方法的超載版本。這些是:

  appendReplacement

  appendTail

  replaceAll

  replaceFirst

  results

  前四個存在于早期版本中,只有參數類型的改變(畢竟是什么重載意味著)。

  appendReplacement /尾

  在的情況下,appendReplacement和appendTail唯一的區別是,該參數也可以是一個StringBuilder,而不僅僅是StringBuffer。考慮到StringBuilder在Java 1.5 中引入的東西,像13年前,沒有人應該說這是一個不小心的行為。

  它雖然多么有趣的API JDK的當前網絡版文檔的行為appendReplacement進行StringBuilder論證。較舊的StringBuffer有爭議的方法明確表示替換字符串可能包含將被相應組替換的命名引用。該StringBuilderargumented版本錯過這個。該文檔似乎是復制/粘貼,然后編輯。該文本將“緩沖區”替換為“構建器”并且相似,并且將刪除指定的引用要素的文本。

  我嘗試使用Java 9 build160的功能,這兩個方法版本的結果是一樣的。這不應該是一個驚喜,因為這兩個方法的源代碼是相同的,JDK中的一個簡單的復制/粘貼,除了參數類型。

  似乎可以使用

  @Test

  注釋行或每一行上面的行。然而,文檔僅涉及編號的引用。

  的replaceAll /第一

  這也是一個“舊”方法,用一些新的字符串替換匹配的組。舊版本和新版本之間的唯一區別是如何提供替換字符串。在舊版本中,字符串是String在調用該方法之前計算的。在新版本中,字符串作為a Function。為每個匹配結果調用此函數,并且可以即時計算替換字符串。

  知道這個課程Function是在3年前在Java 8中引入的,它在正則表達式中的新用法可能是一個小小的破折號。或者也許...可能我們應該看到這是十年后的一個提示,當課程Fuction將是13歲,我們還會有Java 9?

  讓我們深入了解這兩種方法。(實際上只是replaceAll因為replaceFirst它是相同的,除了它只替換了第一個匹配的組。)我嘗試創建一些不是絕對復雜的例子,當這樣的使用可能是有價值的。

  第一個示例來自JDK文檔:

  @Test

  它不是太復雜,顯示功能。使用lambda表達式是絕對足夠的。我不能想象一個更簡單的方法來大寫常量字符串文字“狗”。也許只寫“DOG”。好吧,我只是在開玩笑。但真的這個例子太簡單了。對于更復雜的文檔,文檔可能會使閱讀器與文檔化方法的功能分散。真的:不要指望在JavaDoc中不太復雜的例子。它描述了如何使用API,而不是為什么API被創建為一種設計的方式。

  但是現在我們來看一些比較復雜的例子。我們要在字符串中替換#數字1,2,3等的字符。字符串包含編號的項目,如果我們在字符串中插入一個新的字符串,我們不想手動重新編號。有時我們分組兩個項目,在這種情況下我們寫##,然后我們只想跳過下一個序列號#。由于我們有一個單元測試,代碼比我可以把它描述得更好:

  @Test

  Java培訓教程:Java新的正則表達式功能

傳遞的lambda表達式replaceAll獲取計數器并計算下一個值。如果我們使用了一個,#那么如果我們使用兩個,那么它會增加1,那么它將兩個添加到計數器等等。因為lambda表達式不能改變周圍環境中變量的值(該變量必須是有效的最終),所以計數器不能是變量int或Integer變量。我們需要一個擁有int值的對象,并且可以被更改。AtomicInteger即使我們不使用它的原子特征也是如此。

  下一個例子更進一步,并進行一些數學計算。它將字符串中的任何浮點格式的數字替換為其正弦值。這樣就可以糾正我們的判決,因為罪(pi)甚至不接近于pi,這在這里是不能精確表達的。它接近于零:

  @Test

  我們還將通過這個計算方式來演示我們列表中最后一個方法的演示,這是一個全新的Matcher類。

  流結果()

  新方法results()返回匹配結果的流。更準確地說它返回Stream的MatchResult對象。在下面的示例中,我們使用它從字符串中收集任何浮點格式的數字,并打印它們的正弦值逗號分隔:

  @Test public void resultsTest(){

Java培訓教程:Java新的正則表達式功能

      以上就是動力節點Java培訓機構小編介紹的“Java培訓教程:Java新的正則表達式功能”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。

       相關文章

  零基礎怎么自學Java,完整版Java學習路線圖

  你還在糾結學Java,是自學還是去培訓班嗎

  一個標準的Java程序員如何進階?

  Java學習路線清單,快速進階Java

  Java編程初學者要如何進階

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 91热久久免费频精品动漫99 | 91日韩视频在线观看 | 久久精品国产亚洲沈樵 | 天天怕夜夜怕狠狠怕 | 99热这里有免费国内精品 | 亚洲国产欧洲精品路线久久 | 热99在线视频 | 亚洲加勒比久久88色综合一区 | 免费在线成人网 | 国产在线91区精品 | 成人 亚洲 成人影院 | 美女18毛片免费视频 | 国产精品久线观看视频 | 国产综合色在线视频区 | 青草免费免费观看视频在线 | 91久久| 九九热在线免费 | 中文精品久久久久国产网址 | 国产一级一级一级成人毛片 | 免费看一级大片 | 欧美aaaaaaaa| 亚洲第一永久色 | 永久看日本大片免费 | 爱爱小视频成人免费 | 国产福利在线观看第二区 | 成人美女免费网站视频 | 摸逼综合网 | 久久久www免费看片 久久久不卡 | 日韩成人综合网 | 2020国产成人精品视频人 | 综合色天天 | 国产欧美在线观看 | 久久精品久久久 | 国产精品久久久久久久久免费观看 | 99久久这里只精品麻豆 | avav网站| 久久91| 日本亚洲欧美 | 曰本性l交片视频视频 | 欧美在线一区二区三区精品 | 日产精品一二三四区国产 |