Julia - 在文件中打印或写入字符串中的反斜杠
Julia - Printing or Writing in a file a Backslash in a String
我需要在 Julia 中写入一个 LaTeX 命令,这是一个最小的例子:
open("./file.tex", "w") do f
foo::Int = 5
# write(f, "$foo\hline \n") - This is what I would like to do
# write(f, "$foo \ \n") - This is another thing I want to do, and it works
# write(f, "$foo \\hline \n") - My final goal is this ->
leads to ERROR: syntax: invalid escape sequence
end
你已经明白我想要什么了,我想要一个带有反斜杠的字符串,但不是转义字符。
这不起作用:
julia> "\" # Error
这都不是
julia> "\\hline"
你可以写"\hline"
来得到你想要的。一般来说,规则是两个 \
在结果字符串中转换为一个 \
,所以 "\\h"
是一个错误,因为它被解析为 "\"
然后 "\h"
和 \h
是无效序列,但是例如"\\r"
将被接受,因为 \r
是一个有效的空格序列(所以实际上你很幸运 \h
是无效的,因为它允许你发现错误)。
这也意味着如果你想在输出中有 something\
+newline 你必须写 ""something \\\n""
(五个 \
- 四个获得 "\"
,第五个获得 \n
).
的新行
您可以使用原始字符串文字来避免像这样转义 \
:raw"\hline"
(但是您失去了插值的能力)。 .请参阅 https://docs.julialang.org/en/latest/manual/strings/#man-raw-string-literals-1 以了解字符串末尾带有 \
的极端情况。
如果您经常使用 LaTeX,您可能也对这个软件包感兴趣 https://github.com/stevengj/LaTeXStrings.jl。
我需要在 Julia 中写入一个 LaTeX 命令,这是一个最小的例子:
open("./file.tex", "w") do f
foo::Int = 5
# write(f, "$foo\hline \n") - This is what I would like to do
# write(f, "$foo \ \n") - This is another thing I want to do, and it works
# write(f, "$foo \\hline \n") - My final goal is this ->
leads to ERROR: syntax: invalid escape sequence
end
你已经明白我想要什么了,我想要一个带有反斜杠的字符串,但不是转义字符。 这不起作用:
julia> "\" # Error
这都不是
julia> "\\hline"
你可以写"\hline"
来得到你想要的。一般来说,规则是两个 \
在结果字符串中转换为一个 \
,所以 "\\h"
是一个错误,因为它被解析为 "\"
然后 "\h"
和 \h
是无效序列,但是例如"\\r"
将被接受,因为 \r
是一个有效的空格序列(所以实际上你很幸运 \h
是无效的,因为它允许你发现错误)。
这也意味着如果你想在输出中有 something\
+newline 你必须写 ""something \\\n""
(五个 \
- 四个获得 "\"
,第五个获得 \n
).
您可以使用原始字符串文字来避免像这样转义 \
:raw"\hline"
(但是您失去了插值的能力)。 .请参阅 https://docs.julialang.org/en/latest/manual/strings/#man-raw-string-literals-1 以了解字符串末尾带有 \
的极端情况。
如果您经常使用 LaTeX,您可能也对这个软件包感兴趣 https://github.com/stevengj/LaTeXStrings.jl。