go - 在 Go 中提取子字符串

标签 go substring

我正在尝试从控制台读取整行(包括空格),然后对其进行处理。使用 bufio.ReadString,换行符与输入一起读取,所以我想出了以下代码来修剪换行符:

input,_:=src.ReadString('\n')
inputFmt:=input[0:len(input)-2]+"" //Need to manually add end of string

有没有更惯用的方法来做到这一点?也就是说,是否已经有一个库可以在为您提取子字符串时处理结束的空字节?

(是的,我知道在 go readline -> string 中已经有一种方法可以读取没有换行符的行,但我正在寻找更多优雅的字符串操作。)

最佳答案

您似乎对 slice 的工作方式和字符串存储格式感到困惑,这与您在 C 中的不同。

  • Go 中的任何 slice 都存储长度(以字节为单位),因此您不必关心 len 操作的成本:无需计算
  • Go 字符串不是以 null 结尾的,因此您不必删除 null 字节,也不必在 slice 后通过添加空字符串来添加 1

要删除最后一个字符(如果是单字节字符),只需这样做

inputFmt:=input[:len(input)-1]

关于go - 在 Go 中提取子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12311033/

相关文章:

sockets - golang的net.Conn.Read怎么读到什么时候停止?

go - 警告 : unused variable ‘_cgo_a’

戈朗 : building interfaces for existing types to make code testable

swift - 如何获取 Double 小数点后的第一个数字?

c++ - 如何通过以特定字符结尾来控制子字符串的长度?

mysql - 使用子字符串条件连接表

go - 我如何让 "go get"在网络上而不是在我的计算机上查看

go - 从本地文件安装 gopkg.in/yaml.v2 (Go)

如果分隔符存在,则 SQL 选择子字符串,否则给出完整字符串

ruby - 如何从字符串的开头获取子字符串,直到 Ruby 中字符串中特定索引之前的字符的最后一次出现