亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

為什么 String.replaceAll() 在 Java 8 和 Java 9 中的工作方式

為什么 String.replaceAll() 在 Java 8 和 Java 9 中的工作方式

阿晨1998 2022-07-14 17:33:47
為什么此代碼02輸出java-8但o2在java-9或以上?"o2".replaceAll("([oO])([^[0-9-]])", "0$2")
查看完整描述

1 回答

?
森欄

TA貢獻1810條經驗 獲得超5個贊

很可能是由于JDK-6609854JDK-8189343報告了負嵌套字符類處理(在您的示例中[^[0-9-]])。此行為已在 9 和 10 中修復,但未將修復向后移植到 8。Java 8 的錯誤解釋為:

在 Java 中,否定不適用于出現在嵌套中的任何內容[brackets]

如您所料,因此[^c]與“c”不匹配。

[^[c]]匹配“c”。不是我所期望的。

[[^c]]不匹配“c”

范圍或屬性表達式也是如此 - 如果它們在括號內,則輸出級別的否定不會影響它們。

[^a-z][^[a-z]]


查看完整回答
反對 回復 2022-07-14
  • 1 回答
  • 0 關注
  • 105 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號