我尝试使用以下代码,但得到的字符串相同:
package main
import (
"fmt"
"strings"
)
func main() {
var s = "\b\x02\b\x02\r\n"
a := fmt.Sprintf("%q", s)
fmt.Println("a:", a)
b := strings.TrimRight(a, "\r\n")
fmt.Println("b:", b)
}
答案 0 :(得分:5)
strings.TrimRight()
可以正常工作。您遇到的“问题”是,存储在string
变量中的a
值没有以"\r\n"
结尾。
之所以这样,是因为您使用fmt.Sprintf()
“引用”了该字符串,并且该字符串将以"\\r\\n"
结尾,并且甚至在其上加上了双引号(即,它是以反斜杠,字母r
,另一个反斜杠,字母n
和双引号字符结尾。
如果不引用字符串,则:
var s = "\b\x02\b\x02\r\n"
fmt.Printf("s: %q\n", s)
b := strings.TrimRight(s, "\r\n")
fmt.Printf("b: %q\n", b)
输出(在Go Playground上尝试):
s: "\b\x02\b\x02\r\n"
b: "\b\x02\b\x02"