如何从字符串中删除结尾的“ \ r \ n”

时间:2019-01-23 13:55:00

标签: string go

我尝试使用以下代码,但得到的字符串相同:

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)
}

1 个答案:

答案 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"