我尝试使用以下代码,但得到的结果是相同的字符串:
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)
}
最佳答案
strings.TrimRight()
工作得很好。在您的案例中,“问题”是存储在 a
变量中的 string
值不以 结尾
“\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"
关于string - 如何从字符串中删除尾随 "\r\n",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54328876/