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

时间:2010-06-10 13:49:54

标签: ruby string

我正在尝试将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 个答案:

答案 0 :(得分:2)

我明白了。我使用rails word_wrap辅助函数来包装文本,并使用“\ n”而不是'\ n'。我复制了这个函数并编写了自己的函数。

现在好了。

答案 1 :(得分:1)

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

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

%Q之后的字符是字符串开头,结束分隔符。 ruby智能地使用具有开放近似等价物的成对字符。 e.g。

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!

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

答案 2 :(得分:0)

  

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

这听起来像是你的问题。您的处理工具正在使用文字whack-n(又名\ x5c \ x6e)并将其翻译为单个\ x0a。

换句话说,您的输出过程很好 - 这是您的输入过程不安全。您可以像这样检查字符串:

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

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