我如何在 Nim 中回显带有转义序列的字符串?
How can i echo a string with escape sequences in Nim?
如果我回显这样的字符串:
let s = "Hello\nworld"
echo s
我得到:
Hello
world
我想输出:
Hello\nworld
我知道如果我正在定义字符串,我可以使用原始字符串文字,但如果字符串来自文件等,我该怎么做?
我想我正在寻找类似于 pythons repr()
函数的东西。
edit: Nim 有一个 repr 函数。但是,输出不是我要找的:
let hello = "hello\nworld"
echo repr(hello)
---- Output ----
0x7fc69120b058"hello"
"world"
如何使用:
let s = r"Hello\nWorld"
echo s
将输出:
Hello\nWorld
您可以使用 strutils 包中的转义函数。
import strutils
let s = "Hello\nWorld"
echo s.escape()
这将打印:
Hello\x0AWorld
当前的 strutils 转义函数实现将换行符转义为十六进制值。您可以使用以下代码按照 python 的方式进行操作。
func escape(s: string): string =
for c in items(s):
case c
of '[=12=]'..'', '', '', '', '7'..'5':
result.addEscapedChar(c)
else: add(result, c)
let s = "Hello\nWorld"
echo s.escape()
输出:
Hello\nWorld
这里是 escape and addEscapeChar 函数的文档链接
如果我回显这样的字符串:
let s = "Hello\nworld"
echo s
我得到:
Hello
world
我想输出:
Hello\nworld
我知道如果我正在定义字符串,我可以使用原始字符串文字,但如果字符串来自文件等,我该怎么做?
我想我正在寻找类似于 pythons repr()
函数的东西。
edit: Nim 有一个 repr 函数。但是,输出不是我要找的:
let hello = "hello\nworld"
echo repr(hello)
---- Output ----
0x7fc69120b058"hello"
"world"
如何使用:
let s = r"Hello\nWorld"
echo s
将输出:
Hello\nWorld
您可以使用 strutils 包中的转义函数。
import strutils
let s = "Hello\nWorld"
echo s.escape()
这将打印:
Hello\x0AWorld
当前的 strutils 转义函数实现将换行符转义为十六进制值。您可以使用以下代码按照 python 的方式进行操作。
func escape(s: string): string =
for c in items(s):
case c
of '[=12=]'..'', '', '', '', '7'..'5':
result.addEscapedChar(c)
else: add(result, c)
let s = "Hello\nWorld"
echo s.escape()
输出:
Hello\nWorld
这里是 escape and addEscapeChar 函数的文档链接