go语言 strings.TrimSpace()函数的作用

// TrimSpace returns a slice of the string s, with all leading
// and trailing white space removed, as defined by Unicode.
func TrimSpace(s string) string {
	// Fast path for ASCII: look for the first ASCII non-space byte
	start := 0
	for ; start < len(s); start++ {
		c := s[start]
		if c >= utf8.RuneSelf {
			// If we run into a non-ASCII byte, fall back to the
			// slower unicode-aware method on the remaining bytes
			return TrimFunc(s[start:], unicode.IsSpace)
		}
		if asciiSpace[c] == 0 {
			break
		}
	}

	// Now look for the first ASCII non-space byte from the end
	stop := len(s)
	for ; stop > start; stop-- {
		c := s[stop-1]
		if c >= utf8.RuneSelf {
			return TrimFunc(s[start:stop], unicode.IsSpace)
		}
		if asciiSpace[c] == 0 {
			break
		}
	}

	// At this point s[start:stop] starts and ends with an ASCII
	// non-space bytes, so we're done. Non-ASCII cases have already
	// been handled above.
	return s[start:stop]
}

strings.TrimSpace(s string)会返回一个string类型的slice,并将最前面和最后面的ASCII定义的空格去掉,中间的空格不会去掉,如果遇到了\0等其他字符会认为是非空格。

	buf := make([]byte, 10)
	buf[0] = ' '
	buf[1] = ' '
	buf[2] = 'b'
	buf[3] = 'b'
	buf[4] = ' '
	buf[5] = ' '
	buf[6] = 'b'
	// buf[7] = ' '
	// buf[8] = ' '
	buf[9] = ' '
	fmt.Println(buf)
	fmt.Printf("%s ,%d\n", strings.TrimSpace(string(buf)), len(strings.TrimSpace(string(buf))))

输出结果是
[32 32 98 98 32 32 98 0 0 32]
bb b ,7
也就是说输出结果将前面的两个32和最后一个32去掉,结果长度为7。

如果将buf[9]注释掉

	buf := make([]byte, 10)
	buf[0] = ' '
	buf[1] = ' '
	buf[2] = 'b'
	buf[3] = 'b'
	buf[4] = ' '
	buf[5] = ' '
	buf[6] = 'b'
	// buf[7] = ' '
	// buf[8] = ' '
	// buf[9] = ' '
	fmt.Println(buf)
	fmt.Printf("%s ,%d\n", strings.TrimSpace(string(buf)), len(strings.TrimSpace(string(buf))))

输出结果
[32 32 98 98 32 32 98 0 0 0]
bb b ,8

结果只将前面两个空格去掉了,最后一个32没去掉,所以长度为8

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值