Scala中如何检测字符串是否包含整数字符?
判断Scala字符串是否包含数字字符的简便实现
嘿,这个需求在Scala里其实有好几种简洁又好用的实现方式,我给你梳理几个常用的:
使用
exists配合字符判断(最推荐)
这个方法直观且高效,利用Scala集合的exists方法遍历字符串每个字符,只要有一个字符是数字就返回true:def containsDigit(s: String): Boolean = s.exists(Character.isDigit)测试一下:
containsDigit("AB3")返回true,containsDigit("Dfw")返回false,完全符合你的需求。使用正则表达式
如果你习惯用正则,也可以用字符串的matches方法或者正则的findFirstIn方法:- 用
matches匹配整个字符串:
正则def containsDigit(s: String): Boolean = s.matches(".*\\d.*").*\\d.*表示字符串中任意位置存在至少一个数字(\\d代表数字字符)。 - 用
findFirstIn更高效(不用匹配整个字符串):
这个方法会直接查找第一个数字字符,只要存在就返回def containsDigit(s: String): Boolean = "\\d".r.findFirstIn(s).isDefinedtrue,性能比matches略优。
- 用
Scala 2.13+ 可用的
collectFirst方式
如果你用的是Scala 2.13及以上版本,还可以用模式匹配的方式:def containsDigit(s: String): Boolean = s.collectFirst { case c if c.isDigit => c }.isDefinedcollectFirst会筛选出第一个符合条件的数字字符,只要结果不为空就返回true。
这些方法都能轻松解决你说的“检测字符串是否包含部分整数字符”的问题,其中第一个exists的方法可读性和性能都很不错,是日常开发里最常用的方案~
内容的提问来源于stack exchange,提问作者Amogh Joshi
相关产品推荐
相关产品推荐

