doSmt-6ren">
gpt4 book ai didi

string - Scala:通过模式匹配拆分字符串

转载 作者:行者123 更新时间:2023-12-04 04:53:22 24 4
gpt4 key购买 nike

是否有可能以某种方式将字符串拆分为词法

"user@domain.com" match {
case name :: "@" :: domain :: "." :: zone => doSmth(name, domain, zone)
}

换句话说,以与列表相同的方式......

最佳答案

是的,你可以用 Scala 的 Regex 来做到这一点。功能。

我找到了 email regex on this site ,如果这不适合您,请随意使用另一个:

[-0-9a-zA-Z.+_]+@[-0-9a-zA-Z.+_]+\.[a-zA-Z]{2,4}

我们要做的第一件事是在组周围添加括号:
([-0-9a-zA-Z.+_]+)@([-0-9a-zA-Z.+_]+)\.([a-zA-Z]{2,4})

这样我们就有了三组: @ 之前的部分。 , 在 @ 之间和 . ,最后是 TLD。

现在我们可以从中创建一个 Scala 正则表达式,然后使用 Scala 的 pattern matching unapply从绑定(bind)到变量的正则表达式中获取组:
val Email = """([-0-9a-zA-Z.+_]+)@([-0-9a-zA-Z.+_]+)\.([a-zA-Z]{2,4})""".r
Email: scala.util.matching.Regex = ([-0-9a-zA-Z.+_]+)@([-0-9a-zA-Z.+_]+)\.([a-zA-Z] {2,4})


"user@domain.com" match {
case Email(name, domain, zone) =>
println(name)
println(domain)
println(zone)
}

// user
// domain
// com

关于string - Scala:通过模式匹配拆分字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21171211/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com