You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Golang如何实现保留字符串首尾字符、替换中间内容为星号?

问题分析

你现有代码存在3个核心问题:

  • 语法错误:变量声明缺右括号、循环初始化语句的0l应为0;
  • 逻辑缺失:没有拼接字符串的最后一位字符
  • 未做边界处理:当字符串长度小于等于2时会出现错误输出

正确实现方案

核心思路是先将字符串转为rune切片处理多字节字符,再按长度分场景处理:

import "strings"

func maskString(username string) string {
    runeArr := []rune(username)
    runeLen := len(runeArr)
    // 长度小于等于2时不需要加星号,直接返回原字符串
    if runeLen <= 2 {
        return username
    }
    // 首字符 + (总长度-2)个星号 + 尾字符
    return string(runeArr[0]) + strings.Repeat("*", runeLen-2) + string(runeArr[runeLen-1])
}

用标准库strings.Repeat生成星号串,比循环拼接性能更高,代码更简洁。

测试验证

你给出的示例测试结果完全符合预期:

  • 输入handsome:rune长度为8,输出h******e
  • 输入한국어:rune长度为3,输出한*어

内容的提问来源于stack exchange,提问作者jexists

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:54:01