我有一个看起来像这样的字符串:
str<-"a\f\r"
我正在尝试删除反斜杠但没有任何作用:
gsub("\","",str, fixed=TRUE)
gsub("\\","",str)
gsub("(\)","",str)
gsub("([\])","",str)
...基本上你可以想象的所有变化。我甚至尝试过string_replace_all
功能。任何帮助?
我正在使用R版本3.1.1; Mac OSX 10.7;我的字符串向量中的单个字符串的dput
给出:
dput(line)
"ud83d\ude21\ud83d\udd2b"
我使用标准readLines
文件中的.txt
导入文件。该文件的内容类似于:
got an engineer booked for this afternoon \ud83d\udc4d all now hopefully sorted\ud83d\ude0a I m going to go insane ud83d\ude21\ud83d\udd2b in utf8towcs …
谢谢。
从键盘输入反斜杠时,请务必将其转义。
str <-"this\\is\\my\\string" # note doubled backslashes -> 'this\is\my\string'
gsub("\\", "", str, fixed=TRUE) # ditto
str2 <- "a\\f\\r" # ditto -> 'a\f\r'
gsub("\\", "", str2, fixed=TRUE)# ditto
请注意,如果你这样做
str <- "a\f\r"
然后str
不包含反斜杠。它由3个字符a
,\f
(通常不可打印,除了\f
和\r
(相同))组成。
只是为了阻止一个可能的问题。如果从文件中读取数据,则文件不必具有加倍的反斜杠。例如,如果您有一个包含test.txt
的文件
a\b\c\d\e\f
你也是
str <- readLines("test.txt")
然后str
将包含你期望的字符串a\b\c\d\e\f
:6个字母由5个单个反斜杠分隔。但是如果你想使用它,你仍然需要输入加倍的反斜杠。
str <- gsub("\\", "", str, fixed=TRUE) # now contains abcdef
来自dput
,看起来你所拥有的是UTF-16编码文本,它可能来自Windows机器。根据
它编码Supplementary Multilingual Plane中的字形,这是非常模糊的。我猜你在文件中读到时需要向encoding="UTF-16"
提供参数readLines
。
这可能会有所帮助:)
require(stringi)
stri_escape_unicode("ala\\ma\\kota")
## [1] "ala\\\\ma\\\\kota"
stri_unescape_unicode("ala\\ ma\\ kota")
## [1] "ala ma kota"
一个非常普遍的解决方案是
gsub("\\\\", "", str)
感谢上面的评论。
由于没有任何直接的方法来处理单个反斜杠,这是David Arenburg在评论部分提供的最接近问题的解决方案
gsub("[^A-Za-z0-9]", "", str) #remove all besides the alphabets & numbers
这与接受的答案相同,但rtmoves less(只是非ascii字符):
gsub("[^ -~]", '', "a\f\r")
## [1] "a"