mirror of
https://github.com/cubixle/codekata-golang.git
synced 2026-04-24 20:04:43 +01:00
48 lines
854 B
Go
48 lines
854 B
Go
package main
|
|
|
|
import "strings"
|
|
|
|
func main() {
|
|
|
|
}
|
|
|
|
func maskPII(s string) string {
|
|
if strings.Contains(s, "@") {
|
|
return maskEmail(s)
|
|
}
|
|
return maskPhone(s)
|
|
}
|
|
|
|
func maskEmail(s string) string {
|
|
ss := strings.Split(s, "@")
|
|
name := ss[0]
|
|
name = strings.ToLower(name)
|
|
sb := strings.Builder{}
|
|
sb.WriteByte(name[0])
|
|
sb.WriteString("*****")
|
|
sb.WriteByte(name[len(name)-1])
|
|
return sb.String() + "@" + strings.ToLower(ss[1])
|
|
}
|
|
|
|
func maskPhone(s string) string {
|
|
sb := strings.Builder{}
|
|
for _, c := range s {
|
|
if c >= '0' && c <= '9' {
|
|
sb.WriteByte(uint8(c))
|
|
}
|
|
}
|
|
phone := sb.String()
|
|
sb = strings.Builder{}
|
|
ccLen := len(phone) - 10
|
|
if ccLen > 0 {
|
|
sb.WriteString("+")
|
|
for i := 0; i < ccLen; i++ {
|
|
sb.WriteString("*")
|
|
}
|
|
sb.WriteString("-")
|
|
}
|
|
sb.WriteString("***-***-")
|
|
sb.WriteString(phone[len(phone)-4:])
|
|
return sb.String()
|
|
}
|