正则表达式引用-手机号打码

66 阅读1分钟

查找替换

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是分组的意思,它与正则表达式中的()是一一对应的。