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,将前后两个字符保留,中间的字符全部脱敏。

最后,将脱敏后的字符数组转换为字符串并返回。

3给定一段包含中文、英文、数字的字符串字符串长度大于1小于50要求脱敏显示字符串。脱敏要求:字符串小于4个字符最后一位脱敏字符串等于4位中间2位脱敏字符串大于4位前后2位不脱敏中间全脱敏示例1输入abc 输出 ab示例2输入中国ab输出 中b示例3输入 这个是测试地址abc输出 这个bcgolang 代码实现

原文地址: https://www.cveoy.top/t/topic/i5qP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录