Go - 是否可以将原始字符串文字转换为解释的字符串文字?
Go - Is it possible to convert a raw string literal to an interpreted string literal?
是否可以在 Go 中将原始字符串文字转换为解释字符串文字? (参见 language specification)
我有一个原始字符串文字,但我想在控制台上打印出使用解释字符串文字会得到的结果——即使用转义序列格式化的文本输出。
例如,打印这个原始字符串字面值会得到
s := `3[1mString in bold.3[0m`
println(s) // 3[1mString in bold.3[0m
但我想要与
相同的结果
s := "3[1mString in bold.3[0m"
println(s) // String in bold. (In bold)
对于上下文,我正在尝试使用
打印使用转义序列格式化的文本文件的内容
f, _ := := ioutil.ReadFile("file.txt")
println(string(f))
但输出是前一种方式
s := `3[1mString in bold.3[0m`
s2, err := strconv.Unquote(`"` + s + `"`)
if err != nil {
panic(err)
}
fmt.Println("normal", s2)
这将输出:
normal String in bold.
请注意,传递给 strconv.Unquote()
的 string
值必须包含换行双引号或反引号,并且由于源 s
不包含换行引号,我在前面加上后缀像这样的人:
`"` + s + `"`
查看相关问题:
How do I make raw unicode encoded content readable?
Golang convert integer to unicode character
首先,如果你没有原始字符串,你需要将它写成原始字符串并且不改变像“\n”和其他的东西,并且你想要 return 字节:
s := "3[1mString in bold.3[0m"
rune := string([]rune(s))
b := []byte(rune)
f, err := os.OpenFile("filename.txt", os.O_RDWR, 0644)
if err != nil {
return err
}
if _, err := f.Write(b); err != nil {
return err
}
使用这种方法,字节不会改变,因此 sh265 将是相同的,并且您 return 从文件中读取它后没有进一步更改。
第二,用于读取数据和打印:
bytes, err := os.ReadFile("filename.txt")
if err != nil {
return err
}
s = strconv.Quote(string(bytes))
fmt.Println(s)
你得到了 "\x1b[1mString in bold.\x1b[0m"
是否可以在 Go 中将原始字符串文字转换为解释字符串文字? (参见 language specification)
我有一个原始字符串文字,但我想在控制台上打印出使用解释字符串文字会得到的结果——即使用转义序列格式化的文本输出。
例如,打印这个原始字符串字面值会得到
s := `3[1mString in bold.3[0m`
println(s) // 3[1mString in bold.3[0m
但我想要与
相同的结果s := "3[1mString in bold.3[0m"
println(s) // String in bold. (In bold)
对于上下文,我正在尝试使用
打印使用转义序列格式化的文本文件的内容f, _ := := ioutil.ReadFile("file.txt")
println(string(f))
但输出是前一种方式
s := `3[1mString in bold.3[0m`
s2, err := strconv.Unquote(`"` + s + `"`)
if err != nil {
panic(err)
}
fmt.Println("normal", s2)
这将输出:
normal String in bold.
请注意,传递给 strconv.Unquote()
的 string
值必须包含换行双引号或反引号,并且由于源 s
不包含换行引号,我在前面加上后缀像这样的人:
`"` + s + `"`
查看相关问题:
How do I make raw unicode encoded content readable?
Golang convert integer to unicode character
首先,如果你没有原始字符串,你需要将它写成原始字符串并且不改变像“\n”和其他的东西,并且你想要 return 字节:
s := "3[1mString in bold.3[0m"
rune := string([]rune(s))
b := []byte(rune)
f, err := os.OpenFile("filename.txt", os.O_RDWR, 0644)
if err != nil {
return err
}
if _, err := f.Write(b); err != nil {
return err
}
使用这种方法,字节不会改变,因此 sh265 将是相同的,并且您 return 从文件中读取它后没有进一步更改。
第二,用于读取数据和打印:
bytes, err := os.ReadFile("filename.txt")
if err != nil {
return err
}
s = strconv.Quote(string(bytes))
fmt.Println(s)
你得到了 "\x1b[1mString in bold.\x1b[0m"