aaa*_*aab 1 string functional-programming scala
我有一个字符串数组.每个字符串有2个部分,并用空格分隔.好像:
x <white space> y
Run Code Online (Sandbox Code Playgroud)
我想把它变成一个元组数组,每个元组都有(x,y)
我怎么能在scala中写这个?我知道它需要类似的东西:
val results = listOfStrings.collect { str => (str.left, str.right) }
Run Code Online (Sandbox Code Playgroud)
不知道我怎么能把每个str分解到需要的左右两侧......
您可以利用Scala中的正则表达式也是" 提取器 " 这一事实.
scala> var PairWithSpaces = "(\\w+)\\s+(\\w+)".r
PairWithSpaces: scala.util.matching.Regex = (.+)\s+(.+)
scala> val PairWithSpaces(l, r) = "1 17"
l: String = 1
r: String = 17
Run Code Online (Sandbox Code Playgroud)
现在,您可以将提取器构建为自然的"地图":
scala> Array("a b", "1 3", "Z x").map{case PairWithSpaces(x,y) => (x, y) }
res10: Array[(String, String)] = Array((a,b), (1,3), (Z,x))
Run Code Online (Sandbox Code Playgroud)
对你而言可能有点过头了,但如果你的正则表达式变得有趣,它可以真正提高可读性.我也喜欢如果给出非法字符串,这种方法会如何快速失败.
警告,不确定正则表达式是否与您需要的完全匹配...
归档时间: |
|
查看次数: |
404 次 |
最近记录: |