如何将含双/单引号的R代码转为文本(Shiny应用场景)
解决R中包含混合引号的代码转文本字符串问题
针对你在Shiny应用里需要把同时包含单双引号的代码转成文本字符串的需求,有两种可靠方法:
方法1:使用R 4.0+的原生raw字符串(推荐)
R 4.0及以上版本支持raw字符串字面量,用r"()"语法(括号可替换为其他成对非空白符号,比如r"[]"),内部可以直接写入带单双引号的内容,无需转义,完美解决混合引号的问题。
示例代码:
library(shiny) ui <- fluidPage( textOutput("display_code") ) server <- function(input, output) { # 用raw字符串定义包含混合引号的目标代码 mytext <- r"( <div class="box" id="test"> <button onclick='alert("Hello World")'>点击弹窗</button> </div> )" output$display_code <- renderText({ mytext }) } shinyApp(ui, server)
这里r"(...)"包裹的内容里,单引号'和双引号"都能直接保留,不会触发字符串闭合问题。
方法2:手动转义引号
如果你的R版本低于4.0,可以手动用反斜杠转义字符串内的引号:
- 字符串用双引号包裹时,内部的双引号要写成
\" - 字符串用单引号包裹时,内部的单引号要写成
\'
示例:
mytext <- " <div class=\"box\" id=\"test\"> <button onclick='alert(\"Hello World\")'>点击弹窗</button> </div> "
这种方法需要逐个转义引号,代码可读性差,不如raw字符串方便。
内容的提问来源于stack exchange,提问作者RL_Pug
相关产品推荐
相关产品推荐

