簡體   English   中英

如何在R中的字符串中存儲特殊字符

[英]How to store a special character in a string in R

我試圖將特殊轉義字符\\作為字符串的一部分存儲在 R 中。

x = "abcd\efg"

# Error: '\e' is an unrecognized escape in character string starting ""abcd\e"

x = "abcd\\efg"

# Works

問題是x實際上是我作為 API Web 調用的一部分傳遞的密碼,因此我需要找到一種方法讓字符串存儲文字單斜杠,以便使其正常工作。

使用忽略文字命令的示例:

> x = r"(abcd\efg)"

> y = "https://url?password="

> paste(x, y, sep = "")
[1] "abcd\\efg123"

> # What I need is for it to return
[1] "abcd\efg123"

> z = paste(y, x, sep = "")

> z
[1] "https://url?password=abcd\\efg"

> cat(z)
https://url?password=abcd\efg

當我將z作為 API 命令的一部分傳遞時,我收到“錯誤憑據”消息,因為它將\\\\作為字符串的一部分發送。 cat正確地將它返回到控制台,但它似乎沒有像打印回來那樣發送它。

就像評論中的其他人所說的那樣,該字符串似乎由 R 正確處理。我認為它會成為其他地方的麻煩。 API 或通過匹配軟件本身可能會用它做一些事情。

舉個例子,如果逐字書寫,反斜杠在大多數瀏覽器中不起作用,您需要使用%5C代替。 是關於它的一個討論。

所以你的情況-嘗試用別的東西代替反斜杠,要么%5C或者如@Roland在評論中提到的,一些額外的反斜杠符號,像\\\\\\\\\\\\\\\\\\ 然后看看它們中的任何一個是否有效。

答案和評論包含解決方案,但為了完整起見,請發布與我的具體情況相匹配的答案。

我的包需要用戶提供密碼。 如果密碼中有\\ ,則命令將失敗,如上所述。 解決方案似乎是在輸入中處理它,而不是在用戶提交密碼后嘗試更改值。

library(RobinHood)

# If the true password is: abc\def

# The following inputs will all work
rh <- RobinHood("username", pwd = r"(abc\def)")
rh <- RobinHood("username", pwd = "abc\\def")
rh <- RobinHood("username", pwd = "abc%5Cdef")


暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM