如何在读取文件时删除golang中的特殊字符?
我有这样一个文件: 我在golang读到的是这样的:如何在读取文件时删除golang中的特殊字符?,go,Go,我有这样一个文件: 我在golang读到的是这样的: type ListConf struct { File string Datas map[string]struct{} } func loadListConf(conf *ListConf, path string) { file, err := os.Open(path + "/" + conf.File) if err != nil { fmt.Println("Load conf
type ListConf struct {
File string
Datas map[string]struct{}
}
func loadListConf(conf *ListConf, path string) {
file, err := os.Open(path + "/" + conf.File)
if err != nil {
fmt.Println("Load conf " + conf.File + " error: " + err.Error())
return
}
defer file.Close()
conf.Datas = make(map[string]struct{})
buf := bufio.NewReader(file)
end := false
for !end {
line, err := buf.ReadString('\n')
if err != nil {
if err != io.EOF {
fmt.Println("Load conf " + conf.File + " error: " + err.Error())
return
} else {
end = true
}
}
item := strings.Trim(line, "\n")
if item == "" {
continue
}
conf.Datas[item] = struct{}{}
}
}
但当我在地图上搜索像“www.google.com”这样的关键字时,它显示地图上没有“www.google.com”
website := "www.google.com"
if _, ok := conf.Datas[website]; ok {
fmt.Printf("%s is in the map.", website)
} else {
fmt.Printf("%s is not in the map.", website)
}
它打印“www.google.com不在地图上”。
我发现地图中每个键的末尾都有一个^M,我的问题是如何删除^M字符
www.google.com^M
www.apple.com^M
www.facebook.com^M
Windows上文本文件中的默认行分隔符是两个字符的序列:
\r\n
^M
字符串中的字符是\r
可以以独立于平台的方式将输入拆分为行:
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "error reading from the file:", err)
}
不那么优雅但是
您可以使用以下命令从字符串末尾删除\r
:
行,错误:=buf.ReadString('\n')
行=字符串。右对齐(行“\r”)
它将删除多个
\r
(^M),如果没有,则不会执行操作。谢谢。这就是我所缺少的。我只想指出,在您的修剪行(Windows)中,我改为:line=strings.TrimRight(line,“\r\n”)。这是我删除特殊字符的解决方案
scanner := bufio.NewScanner(file)
for scanner.Scan() {
fmt.Println(scanner.Text())
}
if err := scanner.Err(); err != nil {
fmt.Fprintln(os.Stderr, "error reading from the file:", err)
}