Как заменить строку в Golang?

#string #go

#строка #Вперед

Вопрос:

Я хочу заменить имя пользователя, кроме первого и последнего алфавита.

Например:

 handsome -> h******e

한국어    -> 한*어
 

Это мой код:

 var final = string([]rune(username)[:1]
for i :=0l i <len([]rune(username)); i  {
 if i >1 {
  final = final   "*"
 }
}
 

Ответ №1:

Если вы преобразуете строку в []rune , вы можете изменить этот фрагмент и преобразовать его обратно string в конце:

 func blur(s string) string {
    rs := []rune(s)
    for i := 1; i < len(rs)-1; i   {
        rs[i] = '*'
    }
    return string(rs)
}
 

Тестирование:

 fmt.Println(blur("handsome"))
fmt.Println(blur("한국어"))
 

Вывод (попробуйте на Go Playground):

 h******e
한*어
 

Обратите внимание, что эта blur() функция также работает со строками, которые содержат менее 3 символов, и в этом случае ничего не будет размыто.