描述
用户输入一个11位的纯属数字的手机号码,将4-7位用 “*” 替换掉,以保护隐私。
输入格式
输入一个11位的纯属数字的手机号码,例如:13988775566
输出格式
替换后的手机号,如:139**5566
这个问题有 2 种方法:
- 字符串切片拼接法
切片时注意字符串的序号从 0 开始,获得前3个字符的切片应为 s[0:3] 或 s[:3]。切片包括最后一个字符时,结束序号应为字符串长度,获得最后 4 个字符的操作应为 s[7:11],也可以省略切片结束序号,表示为s[7:]。
s = input()
print(s[0:3] + '****' + s[7:11])
print(s[:3] + '****' + s[7:])
2.字符串替换方法,str.replace(old, new[, max])方法把字符串中的 old字符串替换成 new字符串。
old — 将被替换的子字符串。
new — 新字符串,用于替换old子字符串。
max — 可选参数, 该参数存在时,替换不超过 max 次;该参数不存在时,将字符串中所有与old 字符串相同的子串全部替换掉。
该方法返回字符串中的 old字符串替换成 new字符串后生成的新字符串,这是一个全新的对象,一般要重新命名,也可以作为函数的参数直接使用。
s = input() # 13988776777
print(s.replace(s[3:7], '****',1)) # 139****6777
s_new = s.replace(s[3:7],'****',1) # 4-7位上的字符替换为“****”,只替换一次
print(s_new) # 139****6777
# 可以直接将str.replace()函数 作为print()的参数直接输出其返回值
print(s.replace(s[3:7],'****',1)) # 返回值是替换后的字符串,139****6777
print(s) # 字符串s 本身并未改变,13988776777,替换后会创新新对象,不影响原字符串的值
# 第三个参数 max不可省略,否则某些数据会替换异常
print(s.replace(s[3:7],'****'))
# 例如输入 13413413413,替换后的字符串,****34****3
# s[3:7]的值是'1341',解释器会从头开始查找子串'1341'并替换
# 例如输入 13912341234,替换后的字符串,139********
# s[3:7]的值是'1234',解释器会从头开始查找子串'1234'并替换