用引号结束三重引号字符串文字时,“错误:语法:不能并列字符串文字”

Cam*_*nek 5 julia

我正在尝试创建一个字符串文字,表示带有带引号的字段的 CSV 文件。预期的 CSV 如下所示:

"a","b"
"1","2"
Run Code Online (Sandbox Code Playgroud)

如果我想在字符串末尾添加换行符,则三重引号有效:

julia> """
       "a","b"
       "1","2"
       """
"\"a\",\"b\"\n\"1\",\"2\"\n"
Run Code Online (Sandbox Code Playgroud)

但是,如果我尝试在末尾创建一个没有换行符的字符串,则会出现语法错误:

julia> """
       "a","b"
       "1","2""""
ERROR: syntax: cannot juxtapose string literal
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以解决这个问题?

顺便说一句,请注意,当您使用引号开始字符串文字时,没有语法错误:

julia> """"a","b"
       "1","2"
       """
"\"a\",\"b\"\n\"1\",\"2\"\n"
Run Code Online (Sandbox Code Playgroud)

Ste*_*ski 6

问题是这本身就是一个有效的字符串文字:

"""
"a","b"
"1","2"""
Run Code Online (Sandbox Code Playgroud)

当你跟随"另一个字符串时,解析器会认为“哇,你不能只用另一个字符串跟随一个字符串”。你可以强制它不考虑引用 after2作为关闭"""序列的一部分,通过转义它\

"""
"a","b"
"1","2\""""
Run Code Online (Sandbox Code Playgroud)

在字符串的开头,没有这样的问题,因为前三个"字符用于开始字符串文字,后面的"必须只是字符串内的引号字符,这就是您想要的。

我不确定您认为最好的解决方案是什么。选项是:

  1. 逃到"最后;
  2. 将结束"""放在单独的行上。

后者对我来说似乎更好,但这是你的决定。

有关Triple-Quoted String Literals 的其他示例,请参阅Julia 文档