【发布时间】:2019-09-06 14:24:38
【问题描述】:
我正在编写一个填充乳胶公式的 ruby-on-rails 应用程序。现在,当用户提交的变量包含字符 &(例如,Company & Co. KG)时,我遇到了 pdflatex 错误。对于 Latex,它是一个新的表格列,我需要使用 \& 转义这些字符。
我在Ubuntu 18.04.3 LTS 上使用Rails 5.2.3 和ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux-gnu]。
我尝试使用gsub 替换字符串中的所有&,但遇到了两个问题。
-
\&被匹配的字符串替换 - 我只能插入双反斜杠
\\
所以我也尝试用\ 替换& 之前的字符,但没有成功。
a = "T & T"
a.gsub(&, "\&") -> "T & T"
a.gsub(/(.{1})(?=&)/, " \") -> error: unterminated string meets end of file
a.gsub(/(.{1})(?=&)/, " \\") -> "T \\& T"
如何用单个\ 替换字符,或者我可以以某种方式转义反转的\&?
【问题讨论】:
-
您很可能以向您显示转义版本的方式检查您的字符串。在 irb 中试试这个:
92.chr(产生一个带有单斜杠的字符串)将输出"\\";但puts 92.chr将产生\,即字符串的真实内容。你的代码都没有给你双反斜杠。 -
您要同时替换“&”和“”吗?还是只是“&”加空格?
-
如果你的
&已经被转义了怎么办?如果您使用.gsub('&', '\\\&'),您将在&之前有两个反斜杠。使用.gsub(/\\?&/, '\\\&')。