【发布时间】:2019-01-08 09:37:50
【问题描述】:
我有各种类型的字符串,如下所示:
sales_data_type
saledatatypes
sales_data.new.metric1
sales_data.type.other.metric2
sales_data.type3.metric3
我正在尝试解析它们以获取在最后一个点之前和之后带有单词的子字符串。例如:new.metric1、other.metric2、type3.metric3。如果单词不包含点,则必须按原样返回:sales_data_type, saledatatypes。
使用正则表达式可以这样做:
val infoStr = "sales_data.type.other.metric2"
val pattern = ".*?([^.]+\\.)?([^.]+)$"
println(infoStr.replaceAll(pattern, "$1$2"))
// prints other.metric2
// for saledatatypes just prints nullsaledatatypes ??? but seems to work
我想找到一种方法来使用 Scala 实现这一点,而不使用 Regex 来扩展我对 Scala 特性的理解。将不胜感激任何想法。
【问题讨论】:
标签: string scala pattern-matching