Scala如何提取字符串中分隔符from之后的第一个单词
Scala 提取字符串中
from后首个单词的实现方案 以下两种是常用的稳定实现,适配非固定长度的字符串场景:
方案1:正则匹配(更灵活,推荐)
直接通过正则捕获from后的第一个单词,自动适配from的任意位置、后面的多个空白字符:
val text = "This ball is from Rock. He is good boy" // 正则说明:匹配from后接任意空白符,捕获第一个连续单词字符 val fromPattern = """from\s+(\w+)""".r val result = fromPattern.findFirstMatchIn(text).map(_.group(1)).getOrElse("") // 最终result值为 Rock
如果需要适配大小写不敏感的场景(比如匹配From、FROM),可以把正则修改为:
val fromPattern = """(?i)from\s+(\w+)""".r
方案2:单词拆分遍历(无需写正则)
先把字符串按空白分割为单词数组,定位到from的位置后取下一个单词,再过滤末尾标点即可:
val text = "This ball is from Rock. He is good boy" val words = text.split("\\s+") val fromIndex = words.indexOf("from") val result = if (fromIndex != -1 && fromIndex < words.length - 1) { // 去掉单词末尾的非单词字符(比如示例中的句号) words(fromIndex + 1).replaceAll("\\W+$", "") } else { "" // 未找到from时返回空字符串,可按需调整默认值 } // 最终result值为 Rock
注意事项
- 若
from后第一个单词包含连字符、撇号等特殊字符,可调整正则的匹配规则,比如要匹配带连字符的单词可将\w+替换为[\w-]+ - 两种方案都兼容任意长度、
from任意位置的输入字符串
内容的提问来源于stack exchange,提问作者VnS
相关产品推荐
相关产品推荐

