mirror of
https://github.com/cubixle/codekata-golang.git
synced 2026-04-24 23:04:42 +01:00
20210115
This commit is contained in:
47
20210115/main.go
Normal file
47
20210115/main.go
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
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()
|
||||||
|
}
|
||||||
47
20210115/main_test.go
Normal file
47
20210115/main_test.go
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import "testing"
|
||||||
|
|
||||||
|
func Test_maskPII(t *testing.T) {
|
||||||
|
type args struct {
|
||||||
|
s string
|
||||||
|
}
|
||||||
|
tests := []struct {
|
||||||
|
name string
|
||||||
|
args args
|
||||||
|
want string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
"test1",
|
||||||
|
args{"LeetCode@LeetCode.com"},
|
||||||
|
"l*****e@leetcode.com",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"test2",
|
||||||
|
args{"AB@qq.com"},
|
||||||
|
"a*****b@qq.com",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"test3",
|
||||||
|
args{"1(234)567-890"},
|
||||||
|
"***-***-7890",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"test4",
|
||||||
|
args{"86-(10)12345678"},
|
||||||
|
"+**-***-***-5678",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"test5",
|
||||||
|
args{"+(501321)-50-23431"},
|
||||||
|
"+***-***-***-3431",
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, tt := range tests {
|
||||||
|
t.Run(tt.name, func(t *testing.T) {
|
||||||
|
if got := maskPII(tt.args.s); got != tt.want {
|
||||||
|
t.Errorf("maskPII() = %v, want %v", got, tt.want)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user