我试图从控制台读取整行(包括空格),然后处理它。使用bufio.ReadString,换行符与输入一起读取,所以我编写了以下代码来修剪换行符:
input,_:=src.ReadString('\n')
inputFmt:=input[0:len(input)-2]+"" //Need to manually add end of string
有没有一种更惯用的方法来实现这一点?也就是说,在为您提取子字符串时,是否已经有一个库来处理结尾的空字节?
(Yes,我知道在go readline -> string中已经有一种方法可以读取不带换行符的行,但我更希望看到优雅的字符串操作。)
8条答案
按热度按时间yxyvkwin1#
看起来你被切片的工作方式和字符串存储格式搞糊涂了,这和C语言中的不同。
len
操作的开销:没有必要数1
。要删除最后一个字符(如果是单字节字符),只需执行以下操作
50few1ms2#
警告:单独操作字符串只能使用ASCII,并且当输入是非ASCII UTF-8编码字符时计数错误,甚至可能损坏字符,因为它在序列中间剪切了多字节字符。
下面是一个支持UTF-8的版本:
tag5nh1u3#
Go语言中的字符串不是以空结尾的,要删除字符串的最后一个字符,你可以简单地执行以下操作:
7gcisfzg4#
这是在Go语言中执行substring的简单方法
7uhlpewt5#
要避免零长度输入时出现异常,请将truncate操作 Package 在if中
bsxbgnwa6#
获取子字符串
1.找到“sp”的位置
1.用数组逻辑切割字符串
https://play.golang.org/p/0Redd_qiZM
yvt65v4c7#
8年后,我偶然发现了这颗宝石,但我不相信OP最初的问题得到了真正的回答:
所以我编写了下面的代码来删除换行符
虽然
bufio.Reader
类型支持ReadLine()
方法,该方法同时删除\r\n
和\n
,但它是一个低级函数,使用起来很笨拙,因为需要重复检查。删除空格的惯用方法是使用Golang的strings库:
在GolangPlayground看到这个例子:https://play.golang.org/p/HrOWH0kl3Ww
myzjeezk8#
希望这个功能能对某人有所帮助,
这用于在主字符串中使用**'**的子字符串