1.从文本文件中读入一些包含手机号的字符串
2.把手机号识别出来
3.把手机号的中间四位打码,保存到一个新的文件中。
import scala.io.Source
import java.io.PrintWriter
import java.io.File
object reg05 {
def main(args: Array[String]): Unit = {
// 1. 定义文件路径(可根据实际情况修改)
val inputFilePath = "input.txt" // 原始包含手机号的文本文件
val outputFilePath = "output.txt" // 脱敏后保存的新文件
try {
// 2. 读取输入文件的所有内容
// 按行读取,保留原文本格式
val originalLines = Source.fromFile(inputFilePath, "UTF-8").getLines().toList
// 3. 手机号识别与打码处理
// 正则表达式匹配中国大陆手机号(11位,以1开头,覆盖常见号段)
val phoneRegex = """(1[3-9]\d{9})""".r
val desensitizedLines = originalLines.map { line =>
// 替换手机号中间4位为####,保留前3位和后4位
phoneRegex.replaceAllIn(line, m => {
val phone = m.group(1)
s"${phone.substring(0, 3)}####${phone.substring(7)}"
})
}
// 4. 将脱敏后的内容写入新文件
val printWriter = new PrintWriter(new File(outputFilePath), "UTF-8")
desensitizedLines.foreach(printWriter.println)
printWriter.close()
println("手机号脱敏完成!")
println(s"原始文件:$inputFilePath")
println(s"脱敏文件:$outputFilePath")
} catch {
case e: java.io.FileNotFoundException =>
println(s"错误:未找到文件 $inputFilePath,请确认文件路径是否正确。")
case e: Exception =>
println(s"错误:${e.getMessage}")
}
}
}