Scala 如何拆分列表(Int,String)元组的字符串为小写单词并保留原Int值
函数实现
你猜测的字符串处理逻辑是可行的,完整实现如下:
def a(l: List[(Int, String)]): List[(Int, String)] = { l.flatMap { case (num, str) => // 处理字符串:替换非字母字符为空格、转小写、按空格拆分、过滤空字符串 str.replaceAll("[^A-Za-z]+", " ") .toLowerCase() .split(" ") .filter(_.nonEmpty) .map(word => (num, word)) } }
逻辑说明
- 用
flatMap遍历原List,同时将每个原元组生成的多组新元组合并为一维List - 字符串处理步骤和你猜测的一致,
replaceAll("[^A-Za-z]+", " ")会把所有非字母的连续字符统一替换为单个空格,减少无效拆分结果 - 调用
split(" ")拆分后加filter(_.nonEmpty)是为了兼容原字符串首尾带非字母字符的场景,防止生成空的单词项 - 每个拆分出的单词都和原元组的Int值配对,保证对应关系正确
你提供的示例输入运行后输出完全符合预期。
内容的提问来源于stack exchange,提问作者fleo
相关产品推荐
相关产品推荐

