strings.trimspace 不删中文全角空格(u+3000等),因仅识别unicode标准空白符;应预处理映射或用正则清理。
strings.TrimSpace 为什么删不掉中文空格?
strings.TrimSpace 只识别 Unicode 定义的「空白符」(如 U+0020 空格、\t、\n、\r、\f、\v),不包括全角空格(U+3000)、中文顿号、零宽空格等。遇到用户输入含全角空格的场景,直接用它会残留。
实操建议:
- 先用
strings.Map预处理:把常见全角空白映射成普通空格,再调strings.TrimSpace - 或用正则:
regexp.MustCompile(`[\u3000\uFEFF\u200B\u200C\u200D\s]+`).ReplaceAllString("", ""),但注意性能开销 - 若仅需首尾清理,可手写循环判断 rune,比正则更可控
strings.Split 和 strings.Fields 的行为差异
strings.Split 按固定分隔符切分,保留空字符串;strings.Fields 按任意空白字符(Unicode 空白)分割,自动跳过所有连续空白,并丢弃空结果。
常见错误现象:用 strings.Split(s, " ") 解析含多个空格的配置行,得到一堆 "" 元素。