一尘不染

在Go中提取子字符串

go

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

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

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

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


阅读 253

收藏
2020-07-02

共1个答案

一尘不染

看起来您对切片的工作和字符串存储格式感到困惑,这与您在C语言中所拥有的不同。

  • Go中的任何切片都存储长度(以字节为单位),因此您不必担心len操作成本:无需计数
  • Go字符串不会以null终止,因此您不必删除null字节,也不必1在切片后通过添加空字符串来添加。

要删除最后一个字符(如果是一个字节的字符),只需执行

inputFmt:=input[:len(input)-1]
2020-07-02