3给定一段包含中文、英文、数字的字符串字符串长度大于1小于50要求脱敏显示字符串。脱敏要求:字符串小于4个字符最后一位脱敏字符串等于4位中间2位脱敏字符串大于4位前后2位不脱敏中间全脱敏示例1输入abc 输出 ab示例2输入中国ab输出 中b示例3输入 这个是测试地址abc输出 这个bcgolang 代码实现
package main
import (
"fmt"
"unicode"
)
func main() {
str := "这个是测试地址abc"
sensitiveStr := SensitiveDisplay(str)
fmt.Println(sensitiveStr)
}
func SensitiveDisplay(str string) string {
runeStr := []rune(str)
length := len(runeStr)
if length < 4 {
runeStr[length-1] = '*'
} else if length == 4 {
runeStr[1] = '*'
runeStr[2] = '*'
} else {
for i := 2; i < length-2; i++ {
if unicode.IsLetter(runeStr[i]) || unicode.IsDigit(runeStr[i]) {
runeStr[i] = '*'
}
}
}
return string(runeStr)
}
在上面的代码中,我们使用了unicode包来判断字符是否为字母或数字。根据字符串的长度,分别进行脱敏处理:
- 如果字符串长度小于4,将最后一个字符脱敏。
- 如果字符串长度等于4,将中间两个字符脱敏。
- 如果字符串长度大于4,将前后两个字符保留,中间的字符全部脱敏。
最后,将脱敏后的字符数组转换为字符串并返回。
原文地址: https://www.cveoy.top/t/topic/i5qP 著作权归作者所有。请勿转载和采集!