需求
使用 gerrit 进行 codereview 时,有时会在行尾出现多余的空格,看着别扭。因此需要一个工具删除多余的空格。
函数
import (
"os"
"bufio"
"strings"
)
func formatFile(filename string) error {
f, err := os.OpenFile(filename, os.O_RDWR, 0666) //以读写方式打开文件
if nil != err {
return err
}
defer f.Close() //保证文件能被关闭
var content string //存储新的文件内容
fc := bufio.NewScanner(f) //按行读取文件内容
for fc.Scan() {
content += strings.TrimRight(fc.Text(), " ") + "rn" //去除行尾空格,生成新的文件内容
}
err = f.Truncate(0) //清空文件
if nil != err {
return err
}
_, err = f.Seek(0, 0) //将文件指针指向文件起始位置,保证从头写入文件
if nil != err {
return err
}
_, err = f.WriteString(content) //向文件写入新的内容
if nil != err {
return err
}
return nil
}
主要函数
strings.TrimRight(s string, cutset string)
—— 删除字符串 s
结尾的 cutset
字符串。
strings.TrimLeft(s string, cutset string)
——删除字符串 s
起始位置的 cutset
字符串。
strings.TrimSpace(s string)
——删除字符串 s
开头和结尾的空格。
注:在 Linux 环境中,通常使用工具—— dos2unix 将 dos 格式 的文件转换为 unix 格式 的文件。上述函数中,在生成新的文件内容时,如果在每行结尾添加 rn
,那么生成的文件为 dos 格式;在每行结尾添加 n'
, 那么生成的文件为 unix 格式。