代码之家  ›  专栏  ›  技术社区  ›  thomas

ruby将换行符写入文件,但不解释为真正的换行符

  •  1
  • thomas  · 技术社区  · 15 年前

    我正在尝试将ruby字符串写入到一个文件中,这样嵌入到字符串中的任何换行符都将保持嵌入状态。这将被写入一个文件,然后由另一个工具处理。

    下面是一个例子。

    I want this: 1 [label="this is a\ntest"] \n (second \n is a true newline)
    I have tried this: string = '1 [label="this is a\ntest"]' + "\n"
    

    有什么想法吗?

    3 回复  |  直到 15 年前
        1
  •  2
  •   thomas    15 年前

    我想出来了。我使用rails word\u wrap helper函数包装文本,它使用“\n”而不是“\n”。我复制了函数并编写了自己的函数。

        2
  •  1
  •   Digikata    15 年前

    在Ruby中,单引号不能解释转义序列。可以使用引号运算符:

    string = %Q/1 [label="this is a\\ntest"] \n/
    

    %Q后面的字符是字符串的开头和结尾分隔符。ruby智能地使用具有开-关等价项的成对字符。例如

    string = %Q{1 [label="this is a\\ntest"] \n}
    string = %Q(1 [label="this is a\\ntest"] \n)
    string = %Q!1 [label="this is a\\ntest"] \n!
    

    这使您可以选择一个方便的分隔符,而不需要对特定的字符串文本进行额外的转义。

        3
  •  0
  •   todb    15 年前

    上例中的第一个换行符被下游处理工具读取为实际换行符。

    这听起来像是你的问题。您的处理工具正在获取文本whack-n(aka\x5c\x6e)并将其转换为单个\x0a)。

    string.split(//).map {|x| x[0].ord.to_s(16)}
    

    你会注意到最后只有一个“a”。

    推荐文章