37 lines
834 B
Go
37 lines
834 B
Go
package service
|
|
|
|
func mask(str string, start, end int) string {
|
|
maskLen := end - start
|
|
if maskLen < 0 {
|
|
panic("end cannot be greater than start")
|
|
}
|
|
var maskStr string
|
|
for i := 0; i <= maskLen; i++ {
|
|
maskStr += "*"
|
|
}
|
|
runes := []rune(str)
|
|
return string(append(runes[:start], append([]rune(maskStr), runes[end+1:]...)...))
|
|
}
|
|
|
|
func maskLeft(str string, reserve int) string {
|
|
runes := []rune(str)
|
|
if len(runes)-reserve < 0 {
|
|
panic("length of reserved string is out of range")
|
|
}
|
|
for i := 0; i < len(runes)-reserve; i++ {
|
|
runes[i] = '*'
|
|
}
|
|
return string(runes)
|
|
}
|
|
|
|
func maskRight(str string, reserve int) string {
|
|
runes := []rune(str)
|
|
if len(runes)-reserve < 0 {
|
|
panic("length of reserved string is out of range")
|
|
}
|
|
for i := len(runes) - 1; i > len(runes)-reserve; i-- {
|
|
runes[i] = '*'
|
|
}
|
|
return string(runes)
|
|
}
|