猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
为什么 String.replaceAll() 在 Java 8 和 Java 9 中的工作方式
为什么此代码
02
输出
java-8
但
o2
在
java-9
或以上?
"o2".replaceAll("([oO])([^[0-9-]])", "0$2")
阿晨1998
浏览 118
回答 1
1回答
森栏
很可能是由于JDK-6609854和JDK-8189343报告了负嵌套字符类处理(在您的示例中[^[0-9-]])。此行为已在 9 和 10 中修复,但未将修复向后移植到 8。Java 8 的错误解释为:在 Java 中,否定不适用于出现在嵌套中的任何内容[brackets]如您所料,因此[^c]与“c”不匹配。[^[c]]匹配“c”。不是我所期望的。[[^c]]不匹配“c”范围或属性表达式也是如此 - 如果它们在括号内,则输出级别的否定不会影响它们。[^a-z]与[^[a-z]]
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Java
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续