【问题标题】:TrimRight not working as I expectedTrimRight 没有按我的预期工作
【发布时间】:2018-05-28 00:09:57
【问题描述】:

以下是最新 Go 版本的 TrimRight 代码

我正在观察一种行为,这可能是我误解了,但根据我的理解,下面的代码应该将输出抛出为

Hello

但是输出是这样的

Hell

为什么会这样?请注意,我在割集的 Gophers 之前保留了一个空格,所以从根本上说它应该从主字符串中删除“Gophers”,只留下 Hello

package main

import (
    "fmt"
    "strings"
)

func main() {
    result := strings.TrimRight("Hello Gophers", " Gophers")

    fmt.Println(result, len(result))
}

【问题讨论】:

  • 您不应该按照您的期望编写代码,而是按照文档中的函数规范编写代码。-
  • 我确实看过文档。事实上,我从文档中获取的那段代码。如果你去检查 TrimRight,你会看到。 doc的句子让我很困惑,为此我应该考虑一下

标签: go


【解决方案1】:

如文档所述,TrimRight 会从右侧删除所有匹配的字符。因为 o 包含在您的列表 (" Gophers") 中,所以它也会被修剪。如果你想修剪那个确切的子字符串,请改用TrimSuffix

【讨论】:

  • 但是如果你在cutset中去掉Gophers前面的空格,那么结果就是Hello。即使这样,字符 o 也出现在割集中
  • 是的,因为那时o 不再在最右边的匹配字符集中。
  • TrimRight 修剪切割集中的所有尾随字符。如果空格不在您的割集中,则Hello 中的o 不再尾随,因为它后面是一个非割集字符(空格)。
  • 如果您的输入是“Gophers, Hello Gophers”,而您 TrimRight() 带有一组“Gophers”,您不会期望第一个单词“Gophers”被修剪,对吗?
猜你喜欢
  • 2015-11-17
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-08
  • 2021-01-01
  • 2021-02-28
相关资源
最近更新 更多