我目前正在使用扫描仪和分析程序,需要一个接受ASCII字母字符的解析器 - 所以我不能使用char.isLetter.
我自己想出了两个解决方案.我不喜欢他们两个.
def letter = elem("ascii letter", _.toString.matches("""[a-zA-Z]"""))
Run Code Online (Sandbox Code Playgroud)
使用正则表达式来检查这么简单的事情似乎相当"过度".
def letter = elem("ascii letter", c => ('A' <= c && c <= 'Z') || ('a' <= c && c <= 'z'))
Run Code Online (Sandbox Code Playgroud)
在我看来,这将是Java的发展方向.但它不是真的可读.
是否有一个更清洁,更像Scala的解决方案来解决这个问题?我并不担心性能,因为在这种情况下无关紧要.
Dao*_*Wen 16
你说你不能使用Char.isLetter因为你只想要ASCII字母.为什么不将其限制为7位ASCII字符范围?
def isAsciiLetter(c: Char) = c.isLetter && c <= 'z'
Run Code Online (Sandbox Code Playgroud)
如果读者想检查ASCII包括非字母,那么:
def isAscii(c: Char) = c.toInt <= 127
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10004 次 |
| 最近记录: |