gpt4 book ai didi

java - String matches() 方法的奇怪行为

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:33:54 27 4
gpt4 key购买 nike

我遇到了一个关于 String 的 matches(RegExp) 方法的有趣问题。

assertTrue("33CCFF".matches("[0-9A-Za-z]{6}"));
assertTrue("CC33FF".matches("[0-9A-Za-z]{6}"));
assertTrue("CC3355".matches("[0-9A-Za-z]{6}"));
assertTrue("CC9955".matches("[0-9A-Za-z]{6}"));
assertTrue("CC3366".matches("[0-9A-Za-z]{6}"));
assertTrue("CC3965".matches("[0-9A-Za-z]{6}"));
assertTrue("CC1961".matches("[0-9A-Za-z]{6}"));
assertTrue("CC9999".matches("[0-9A-Za-z]{6}"));
assertTrue("СС3966".matches("[0-9A-Za-z]{6}")); // failing
assertTrue("СС9965".matches("[0-9A-Za-z]{6}")); // failing
assertTrue("СС9966".matches("[0-9A-Za-z]{6}")); // failing

最后 3 个断言意外失败。我找不到发生这种奇怪行为的任何原因。你有同样的问题吗?你有什么想法吗?

顺便问一下,我的java版本如下。

java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)

最佳答案

最后三个不是实际上以 ASCII“C”字符开头。它们以 看起来 像“C”的非 ASCII 字符开头。这与 [0-9A-Za-z] 集中的任何内容都不匹配,因此模式失败。

(我通过将代码复制并粘贴到文本编辑器中发现了这一点,该文本编辑器不能很好地处理非 ASCII 字符 - 它们以“?”的形式出现。)

关于java - String matches() 方法的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7664478/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com