描述

用户输入一个11位的纯属数字的手机号码,将4-7位用 “*” 替换掉,以保护隐私。

输入格式


输入一个11位的纯属数字的手机号码,例如:13988775566

输出格式


替换后的手机号,如:139**5566

这个问题有 2 种方法:

  1. 字符串切片拼接法

切片时注意字符串的序号从 0 开始,获得前3个字符的切片应为 s[0:3] 或 s[:3]。切片包括最后一个字符时,结束序号应为字符串长度,获得最后 4 个字符的操作应为 s[7:11],也可以省略切片结束序号,表示为s[7:]。

  1. s = input()
  2. print(s[0:3] + '****' + s[7:11])
  3. print(s[:3] + '****' + s[7:])

2.字符串替换方法,str.replace(old, new[, max])方法把字符串中的 old字符串替换成 new字符串。

old — 将被替换的子字符串。
new — 新字符串,用于替换old子字符串。
max — 可选参数, 该参数存在时,替换不超过 max 次;该参数不存在时,将字符串中所有与old 字符串相同的子串全部替换掉。

该方法返回字符串中的 old字符串替换成 new字符串后生成的新字符串,这是一个全新的对象,一般要重新命名,也可以作为函数的参数直接使用。

  1. s = input() # 13988776777
  2. print(s.replace(s[3:7], '****',1)) # 139****6777
  3. s_new = s.replace(s[3:7],'****',1) # 4-7位上的字符替换为“****”,只替换一次
  4. print(s_new) # 139****6777
  5. # 可以直接将str.replace()函数 作为print()的参数直接输出其返回值
  6. print(s.replace(s[3:7],'****',1)) # 返回值是替换后的字符串,139****6777
  7. print(s) # 字符串s 本身并未改变,13988776777,替换后会创新新对象,不影响原字符串的值
  8. # 第三个参数 max不可省略,否则某些数据会替换异常
  9. print(s.replace(s[3:7],'****'))
  10. # 例如输入 13413413413,替换后的字符串,****34****3
  11. # s[3:7]的值是'1341',解释器会从头开始查找子串'1341'并替换
  12. # 例如输入 13912341234,替换后的字符串,139********
  13. # s[3:7]的值是'1234',解释器会从头开始查找子串'1234'并替换