连接中的字符串插值产生两个双引号而不是一个 (JuliaLang)
A string interpolation within concatenation is producing two double quotes instead of one (JuliaLang)
我试图在 JuliaLang 中的串联过程中在字符串中包含一个双引号,如下所示:
tmpStr = string(tmpStr, string("graph [label=\" hi \"]; "))
用writedlm
写的文本文件中的输出是:
graph [label="" hi ""]
如何修改字符串插值以仅包含一个双引号而不是重复?
额外的双引号来自writedlm
。 writedlm
使用标准的CSV转义方式,特殊字符用双引号括起来,用""
表示单双引号。这样就可以了,只要你在读取文件的时候做逆变换就可以了。
跟踪此类问题的一个好方法是创建一个最小的工作示例。在这种情况下,类似于:
writedlm("tst.tst",["\""])
写 tst.tst
,但 tst.tst
现在有:
""""
但是当正确阅读时:
julia> data = readdlm("tst.tst")
1×1 Array{Any,2}:
"\""
符合预期。
另一种避免获得额外引号的方法是将 quotes=false
添加为 writedlm
的选项,如下例所示:
julia> writedlm(STDOUT,["\""],quotes=false)
"
我试图在 JuliaLang 中的串联过程中在字符串中包含一个双引号,如下所示:
tmpStr = string(tmpStr, string("graph [label=\" hi \"]; "))
用writedlm
写的文本文件中的输出是:
graph [label="" hi ""]
如何修改字符串插值以仅包含一个双引号而不是重复?
额外的双引号来自writedlm
。 writedlm
使用标准的CSV转义方式,特殊字符用双引号括起来,用""
表示单双引号。这样就可以了,只要你在读取文件的时候做逆变换就可以了。
跟踪此类问题的一个好方法是创建一个最小的工作示例。在这种情况下,类似于:
writedlm("tst.tst",["\""])
写 tst.tst
,但 tst.tst
现在有:
""""
但是当正确阅读时:
julia> data = readdlm("tst.tst")
1×1 Array{Any,2}:
"\""
符合预期。
另一种避免获得额外引号的方法是将 quotes=false
添加为 writedlm
的选项,如下例所示:
julia> writedlm(STDOUT,["\""],quotes=false)
"