查找替换
1.从文本文件中读入一些包含手机号的字符串
2.把手机号识别出来
3.把手机号中间四位打码,保存到一个新的文本文件中
用到的方法是:正则匹配分组 + replaceAllIn。
replaceAllin正则替换:
功能:对目标字符中的内容,进行正则查找,对找到的内容使用指定的内容进行替换,并返回替换之后的字符串。
格式是:正则.replaceAll(目标字符串, 匹配到的内容 => 要替换的内容 )
package reg
/*
1.从文本文件中读入一些包含手机号的字符串
2.把手机号识别出来
3.把手机号中间四位打码,保存到一个新的文本文件中
*/
object test {
def main(args: Array[String]): Unit = {
// 1. 读入文件,根目录下的address.txt
val source = scala.io.Source.fromFile("address.txt").mkString
// println(source)
// 2. 识别手机号
val reg = "(1[356789])(\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)
// m.toString
})
// println(newSource)
// 4. 输出文件
val writer = new java.io.PrintWriter("address01.txt")
writer.write(newSource)
writer.close()
}
}
这里的group是分组的意思,它与正则表达式中的()是一一对应的。