题目
1.从文本文件中读入一些包含手机号的字符串 2.把手机号识别出来 3.把手机号的中间四位打码,保存到一个新的文件中。
【例如】
小花,湖北潜江盛世城3楼303号,13133312146
👇
小花,湖北潜江盛世城3楼303号,131####2146
代码
package reg
object reg02 {
import scala.io.Source
import java.io.{File, PrintWriter}
// 匹配11位手机号的正则表达式(可根据实际需求调整匹配规则)
private val phoneRegex = """(\d{3})\d{4}(\d{4})""".r
/**
* 对文本中的手机号进行脱敏处理
* @param text 原始文本
* @return 脱敏后的文本
*/
def maskPhoneNumbers(text: String): String = {
// 替换手机号:保留前3位和后4位,中间4位替换为####
phoneRegex.replaceAllIn(text, m => s"${m.group(1)}####${m.group(2)}")
}
/**
* 读取文件内容并处理手机号脱敏,然后写入新文件
* @param sourcePath 源文件路径
* @param targetPath 目标文件路径
*/
def processFile(sourcePath: String, targetPath: String): Unit = {
try {
// 读取源文件内容
val sourceContent = Source.fromFile(sourcePath).mkString
// 处理手机号脱敏
val maskedContent = maskPhoneNumbers(sourceContent)
// 写入目标文件
val writer = new PrintWriter(new File(targetPath))
writer.write(maskedContent)
writer.close()
println(s"文件处理完成!脱敏后的文件已保存至:$targetPath")
} catch {
case e: Exception => println(s"文件处理失败:${e.getMessage}")
}
}
// 程序入口
def main(args: Array[String]): Unit = {
// 配置源文件和目标文件路径(请替换为你实际的文件路径)
val sourceFile = "input.txt" // 源文件(包含原始文本)
val targetFile = "output.txt" // 目标文件(保存脱敏后的文本)
// 执行文件处理
processFile(sourceFile, targetFile)
}
}