回答

收藏

用R中的双引号替换转义的双引号

技术问答 技术问答 118 人阅读 | 0 人回复 | 2023-09-13

我正在使用RMySQL在SQL数据库中编写一些html代码(但我想我的问题是一个通用的R问题,而不是与SQL或RMySQL真正相关的问题)。所以我正在尝试这样的事情:
: L) D5 i$ |  e- v# y- jcon Some text without any tricky symbols."    / Z: I5 e2 N! h  z, f) z# [; ~
    query 麻烦的是,R的粘贴会将单引号中的双引号(即““”)替换为转义序列\”,即:  p9 @9 e# K0 e% N3 T: W
> paste(query, collapse = "")
  ?$ Q' \# f" ?5 j[1] "INSERT INTO table (htmlfield) VALUES (\"Some text without any tricky symbols.\""
6 d; `- G* i1 ^4 |& ^! \0 P6 m8 i) \: X/ u如果我将向量查询中的单引号更改为双引号,并将html中的单引号更改为双引号,那么问题就出在字符串html的一边,因为之后html中的双引号被转义的序列替换了。
+ x) g& l2 b: r" c处理转义字符的最简单方法是什么?5 S5 E2 B( R% l- [" Y+ T; }& w5 @
感谢您的关注,Philipp( [7 V* w. w( z* I
                  A6 ?9 E3 F# z3 P; R" d+ d
解决方案:
. F2 d4 O- y* _9 j               
3 m, g: s4 E" t, S- A
& O( w5 p' X# `% |& W4 E8 v. X5 s* g4 I" k0 N  s' m
                我发现您的问题中包含两个问题。第一个看起来像是错字。后:8 o& F/ L- b3 N  l& A
html Some text without any tricky symbols."
& Y% h) [0 h4 X, n+ q- k你有:$ n! _3 m0 d# f# h0 T
query 请注意,您对一个字符串进行了转义,而对另一字符串则没有。您不需要逃避它们,但是如果您这样做,则无关紧要。我还想'")'指出最后一个字符串,这是您所收到错误的真正原因。paste而不是c在这里更有用。如果将它们结合起来,我们将得到:. J1 N& D8 m1 d8 V3 ?! z
query 我们可以直接使用:3 H& o  d7 r: b) M
dbSendQuery(con, query)/ n$ M& M6 T: f1 n1 _( q+ y
第二个问题,也是许多人提出的一个问题,是将对象的打印表示与对象本身混淆。如果我们打印query,我们将看到:: \- ^. r5 S2 F. ^2 |
> query2 W6 }. F( i1 I  I9 B" k% R) [2 a
[1] "INSERT INTO table (htmlfield) VALUES (\"Some text without any tricky symbols.\")"
% }1 y  q- i# Q8 v5 B7 X8 E字符串的打印表示形式始终用""双引号引起来,因此"需要避免内部使用。您要查看的是实际的字符串。我们可以使用-cat或writeLines-我更喜欢后者,因为它会"\n"自动将末尾添加到字符串的末尾:
% v3 U5 @9 O! ?7 c0 R9 x> writeLines(query), l5 ?2 c3 n- Z! ?6 ?$ |* ^
INSERT INTO table (htmlfield) VALUES ("Some text without any tricky symbols.")
4 y% W% }, y( Z9 C4 R请注意,"现在如何 不进行 转义。那就是数据库服务器将要执行的SQL。如果那是对您的数据库有效的SQL,则它将起作用。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则