任务目标
- 数据读取:从文本文件(如示例中的
address.txt)读取包含个人信息的字符串; - 手机号识别:从字符串中提取 11 位手机号(示例中为
16607217767); - 最后结果:将手机号中间 4 位替换为掩码(如
####),最终输出脱敏后的内容(示例中为166####7767)。
package reg
object reg02 {
def main(args: Array[String]): Unit = {
// 1. 读文件:项目下的address.txt
val source = scala.io.Source.fromFile("address.txt").mkString
// println(source)
// 2. 识别手机号
val reg = "(1[3456789]\d)(\d{4})(\d{4})".r
// 3. 替换
// group 分组
// group(0) 匹配到的整个字符串
// group(1) 匹配到的第1个括号
// group(2) 匹配到的第2个括号
// group(3) 匹配到的第3个括号
val newSource = reg.replaceAllIn(source, m => {
println(m.group(0))
println(m.group(1))
println(m.group(2))
println(m.group(3))
m.group(1) + "****" + m.group(3)
// println(m.toString)
// m.toString
})
// 4. 输出文件
val writer = new java.io.PrintWriter("address_new.txt")
writer.write(newSource)
writer.close()
}
}
原文件:
新文件运行结果: