【发布时间】:2015-10-24 00:38:35
【问题描述】:
这是我试图解决的问题的简化版本。 所以,尽量不要破解答案:)
在R中,默认情况下
'"' == '\"'
因此,当我使用
URLencode('\"')
URLencode('"')
我得到了同样的结果:%22
然而,我真正想要的是
%5C%22 和 %22 分别对应上述两个命令。
目标是将'parse "I am * \"good\"" as adj'等字符串编码成URL字符串
parse%20%22I%20am%20*%20%5C%22good%5C%22%22%20as%20adj
有什么想法吗?
==========更新=====
鉴于上述问题的困惑。我想进一步澄清:
我理解R 将'\"' 视为'"'。
但我希望R 自动,而不是我手动,将'\"' 的用户 字符串输入转换为'\\\"',同时处理'"' 的输入字符串如'"' 或'\"',无论如何都是等价的。
【问题讨论】:
-
可能是
URLencode('\\"')? -
听起来您认为第一个字符串中有斜线。那没有。只有一个字符转义。要获得文字斜线,您需要转义斜线。
URLencode('\\\"')将返回"%5C%22"。注意nchar('\\\"')==2而nchar('\"')==1。 "\" 在单引号和双引号字符串中的转义方式相同,因此URLencode("\\\"")和URLencode('\\\"')是相同的。 -
只是为了扩充@MrFlick 所说的内容,您可以通过尝试以下操作看到
\"与"被视为完全相同的字符串:identical('"', '\"')。 -
如果您从闪亮的文本框中获取数据,那么闪亮应该为您翻译这些数据。试试:
runApp(list(ui=mainPanel(textInput("userin", "input"), textOutput("userout")),server=shinyServer(function(input, output) {output$userout<- renderText({URLencode(input$userin)})})))。如果涉及shiny,您应该在问题中明确说明。您似乎遗漏了导入信息。 -
如果您使用任何函数从文本文件或剪贴板将数据读入 R,R 将区分这两个值并自动进行适当的转义。闪亮的也是如此。 R 代码中的字符串规则与原始数据中允许的规则不同。