我试图读取从控制台(包括空格),整条生产线,然后对其进行处理。 使用bufio.ReadString,换行符与输入一起读,所以我想出了下面的代码来修剪换行符:
input,_:=src.ReadString('\n')
inputFmt:=input[0:len(input)-2]+"" //Need to manually add end of string
有没有一种更地道的方式来做到这一点? 也就是说,有没有已经为您提取字符串时,是以结束空字节的护理库?
(是的,我已经知道有一种方法来读取,而不在换行符线走的readline - >字符串但我正在寻找更优雅的字符串操作。)
它看起来像你被切片的工作和字符串存储格式,这是你在什么C.混淆不同
- 在Go任何片存储长度(以字节为单位),所以你不必在意成本
len
操作:没有必要算 - 去串NOT NULL终止,所以您不必删除一个空字节,而不必增加
1
通过添加一个空字符串切片后。
要删除最后一个字符(如果它是一个字节字符),根本就
inputFmt:=input[:len(input)-1]
去字符串不是空终止,删除,你可以简单地做一个字符串的最后一个字符:
s = s[:len(s)-1]
为了避免零长度输入恐慌,包裹在一个如果截断操作
input, _ := src.ReadString('\n')
var inputFmt string
if len(input) > 0 {
inputFmt = input[:len(input)-1]
}
// Do something with inputFmt
要获得子
找到“SP”的位置
切串阵列的逻辑
https://play.golang.org/p/0Redd_qiZM
这是简单的一个围棋子演出
package main
import "fmt"
var p = fmt.Println
func main() {
value := "address;bar"
// Take substring from index 2 to length of string
substring := value[2:len(value)]
p(substring)
}
警告:独对字符串操作将只与ASCII工作,当输入非ASCII UTF-8编码的字符,并可能甚至贪污腐败人物,因为它减少多字节字符中旬序列将错误计数。
这里是一个UTF-8识别版本:
func substr(input string, start int, length int) string {
asRunes := []rune(input)
if start >= len(asRunes) {
return ""
}
if start+length > len(asRunes) {
length = len(asRunes) - start
}
return string(asRunes[start : start+length])
}