我有两根弦
val string1 = "Hello"
val string2 = "Hello world"
我必须计算string1
中的每个字母在Kotlin
中的存在性
到目前为止,我已经编写了这么多代码,并坚持使用regex
val string1_array = string1.toCharArray()
val pattern = Regex("") // Regex pattern here
val matcher = string2
val count = pattern.findAll(matcher).count()
应该使用什么样的正则表达式模式来搜索charArray?在Kotlin中是否有更好的方法
7条答案
按热度按时间kg7wmglp1#
下面是一些可以使用的
String
扩展函数任何字符的出现次数
使用
fold
扩展函数:或者使用
sumBy
时更短:或者更短:
或最短:
每个字符单独出现的次数
使用
forEach
和MutableMap
:整个
string1
的出现次数用
windowed
扩展函数:您可以在
String
stblib page中浏览更多String
扩展函数zqdjd7g92#
可以使用下面的高阶方法、
mwecs4sa3#
只要使用Kotlin的集合函数
h6my8fg24#
当您只想计算单一字符的出现次数时,简化的使用案例:
参考编号:
cygmwpex5#
要回答实际问题:最简单的正则表达式模式是使用字符类语法
"[" + string1 + "]"
。请注意,这并不总是很好的表现。它对所有ASCii字母和数字都很有效。特殊字符如\^-?!
必须正确转义。有关规则,请参阅https://www.regular-expressions.info/charclass.html**How to solve the task:**Imho完成此任务的最佳方法是使用
filter
或count
而不是regex,因为您不必使用任何特殊语法。k10s72fa6#
您可以使用第一个字符串中的字符作为Map键,例如:
xwmevbvl7#