R - 使用转义引号创建字符串,输入来自变量
R - Create string with escaped quotes, with input from variables
我需要创建这个包含准确内容的字符串,以便在 API REST 客户端中使用。
body =
"{
\"epic\": \"sweden\",
\"direction\": \"BUY\"
}"
我已经通过在不调用变量的情况下创建字符串来使用该解决方案。我现在正在寻找使用变量输入构建字符串。
我需要一个不添加更多 R 包的解决方案。最好以最小的复杂性进行良好的概述。我希望避免长正则表达式模式(但如果正则表达式是一个很好的推荐方式,我愿意考虑)。
在 attemp-1 和 attempt-2 中,我故意省略了花括号,以尽量减少问题及其代码。不过,大括号需要成为解决方案的一部分。
到目前为止的尝试次数:
Attemp-1(用粘贴解决):
epic1 <- paste0("\"", "sweden")
direction1 <- paste0("BUY", "\"")
create.body1 <- c(epic1, "," ,direction1)
结果:
"\"sweden" "," "BUY\""
问题:每个提供的变量输入都有引号。此外,转义字符仅作为完整字符串的包装添加,而不是根据每个键和值的需要添加。
Attemp-2(用 [noQuote] 去掉引号):
epic2 <- paste0("\"", "sweden")
direction2 <- paste0("BUY", "\"")
create.body2 <- noquote(c(epic2, "," ,direction2))
结果:
"sweden , BUY"
问题:所需的转义字符、反斜杠消失了。
Attemp-3(在构建正文字符串之前预构建 [key/value 对]):
# Curly brackets.
curly.bracket.left <- "{"
curly.bracket.right <- "}"
# Epic build [key/pair]
epic_key <- "\"epic\": "
epic_value <- "\"sweden\""
epic_pair <- c(epic_key, epic_value)
# Direction build [key/pair]
direction_key <- "\"direction\": "
direction_value <- "\"BUY\""
direction_pair <- c(direction_key, direction_value)
# Construct body string.
build.body <- c(
curly.bracket.left,
epic_pair,
direction_pair,
curly.bracket.right
)
结果:
"{" "\"epic\": " "\"sweden\"" "\"direction\": " "\"BUY\"" "}"
问题:正文字符串中有太多引号。不过所有 [\"] 都很好。
我从你的第三次尝试开始。结果看起来像你所追求的。我基本上只是将 c() 换成了 paste(),并在模板中有 space 的地方插入了一些 space。这是你需要的吗?
curly.bracket.left <- "{"
curly.bracket.right <- "}"
# Epic build [key/pair]
epic_key <- "\"epic\": "
epic_value <- " \"sweden\","
epic_pair <- c(epic_key, epic_value)
# Direction build [key/pair]
direction_key <- "\"direction\": "
direction_value <- "\"BUY\""
direction_pair <- c(direction_key, direction_value)
# Construct body string.
build.body <- c(
curly.bracket.left,
epic_pair,
direction_pair,
curly.bracket.right
)
string <- paste(curly.bracket.left, epic_key, epic_value, direction_key, direction_value, curly.bracket.right)
> print(string)
[1] "{ \"epic\": \"sweden\", \"direction\": \"BUY\" }"
我需要创建这个包含准确内容的字符串,以便在 API REST 客户端中使用。
body =
"{
\"epic\": \"sweden\",
\"direction\": \"BUY\"
}"
我已经通过在不调用变量的情况下创建字符串来使用该解决方案。我现在正在寻找使用变量输入构建字符串。
我需要一个不添加更多 R 包的解决方案。最好以最小的复杂性进行良好的概述。我希望避免长正则表达式模式(但如果正则表达式是一个很好的推荐方式,我愿意考虑)。
在 attemp-1 和 attempt-2 中,我故意省略了花括号,以尽量减少问题及其代码。不过,大括号需要成为解决方案的一部分。
到目前为止的尝试次数:
Attemp-1(用粘贴解决):
epic1 <- paste0("\"", "sweden")
direction1 <- paste0("BUY", "\"")
create.body1 <- c(epic1, "," ,direction1)
结果:
"\"sweden" "," "BUY\""
问题:每个提供的变量输入都有引号。此外,转义字符仅作为完整字符串的包装添加,而不是根据每个键和值的需要添加。
Attemp-2(用 [noQuote] 去掉引号):
epic2 <- paste0("\"", "sweden")
direction2 <- paste0("BUY", "\"")
create.body2 <- noquote(c(epic2, "," ,direction2))
结果:
"sweden , BUY"
问题:所需的转义字符、反斜杠消失了。
Attemp-3(在构建正文字符串之前预构建 [key/value 对]):
# Curly brackets.
curly.bracket.left <- "{"
curly.bracket.right <- "}"
# Epic build [key/pair]
epic_key <- "\"epic\": "
epic_value <- "\"sweden\""
epic_pair <- c(epic_key, epic_value)
# Direction build [key/pair]
direction_key <- "\"direction\": "
direction_value <- "\"BUY\""
direction_pair <- c(direction_key, direction_value)
# Construct body string.
build.body <- c(
curly.bracket.left,
epic_pair,
direction_pair,
curly.bracket.right
)
结果:
"{" "\"epic\": " "\"sweden\"" "\"direction\": " "\"BUY\"" "}"
问题:正文字符串中有太多引号。不过所有 [\"] 都很好。
我从你的第三次尝试开始。结果看起来像你所追求的。我基本上只是将 c() 换成了 paste(),并在模板中有 space 的地方插入了一些 space。这是你需要的吗?
curly.bracket.left <- "{"
curly.bracket.right <- "}"
# Epic build [key/pair]
epic_key <- "\"epic\": "
epic_value <- " \"sweden\","
epic_pair <- c(epic_key, epic_value)
# Direction build [key/pair]
direction_key <- "\"direction\": "
direction_value <- "\"BUY\""
direction_pair <- c(direction_key, direction_value)
# Construct body string.
build.body <- c(
curly.bracket.left,
epic_pair,
direction_pair,
curly.bracket.right
)
string <- paste(curly.bracket.left, epic_key, epic_value, direction_key, direction_value, curly.bracket.right)
> print(string)
[1] "{ \"epic\": \"sweden\", \"direction\": \"BUY\" }"