我目前正在使用扫描仪和解析器,需要一个解析器来接受 ASCII 字母字符 - 所以我不能使用char.isLetter
.
我自己想出了两个解决方案。我不喜欢他们两个。
正则表达式
def letter = elem("ascii letter", _.toString.matches("""[a-zA-Z]"""))
用正则表达式检查这样一个简单的事情似乎相当“矫枉过正”。
范围检查
def letter = elem("ascii letter", c => ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z'))
在我看来,这将是 Java 的发展方向。但它并不是真正可读的。
有没有更清洁、更类似于 Scala 的解决方案来解决这个问题?我并不真正担心性能,因为在这种情况下并不重要。