替换特殊字符不适用于gsub

时间:2019-05-09 16:18:24

标签: r gsub stringr

我有一个包含许多字符串的表,这些字符串包含一些奇怪的字符,我想用“原始”字符替换。 Ä变成Ã,ö变成ö,因此我在文本中将每个Ã替换为ö。它可以工作,但是ß变成,我无法替换它...

# Works just fine:
gsub('ö', 'REPLACED', "Testing string ö")


# this does not work
gsub("Ã<U+009F>", "REPLACED", "Testing string Ã<U+009F> ")

# this does not work as well...
gsub("â<U+0080><U+0093>", "REPLACED", "Testing string â<U+0080><U+0093> ")

如何告诉R用我要插入的字母替换这些部分?

2 个答案:

答案 0 :(得分:1)

由于存在元字符(+-表示一个或多个),为了从字面上对其进行评估,请转义(如解决方案中的@boski所述)或使用fixed = TRUE

sub("Ã<U+009F>", "REPLACED", "Testing string Ã<U+009F> ", fixed = TRUE)
#[1] "Testing string REPLACED "

答案 1 :(得分:0)

您必须转义+符号,因为它是regex命令。

> gsub("Ã<U\\+009F>", "REPLACED", "Testing string Ã<U+009F> ")
[1] "Testing string REPLACED "

> gsub("â<U\\+0080><U\\+0093>", "REPLACED", "Testing string â<U+0080><U+0093> ")
[1] "Testing string REPLACED "