Как я могу избавиться от одного backsla sh в строке в R? - PullRequest
1 голос
/ 04 мая 2020

Как удалить все обратные слеши из этой строки?

t1 <- "1\2\3\4\5"

Вывод:

"1\002\003\004\005"

желаемый вывод:

"1002003004005"

Спасибо!

Ответы [ 2 ]

1 голос
/ 04 мая 2020

Это хитро, потому что "1\002\003\004\005" на самом деле не является допустимой строкой для начала. Чтобы увидеть это:

> writeLines(t1)
1

Тем не менее, мы можем сначала deparse это создать действительную строку.

t2 <- deparse(t1)
> t2
[1] "\"1\\002\\003\\004\\005\""

А затем использовать обычный gsub для удаления \ и кавычки, которые мы добавили в качестве побочного эффекта.

t3 = gsub('\\', '', t2, fixed = TRUE)
t3 = gsub('\"', '', t3)

В идеале мы написали бы составное регулярное выражение.

t3 = gsub('[(\")(\\)]', '', t2)
> t3
[1] "1002003004005"

Редактировать: В качестве единственного подписчика:

gsub('[(\")(\\)]', '', deparse(t1))

Вы можете обратиться по ссылке ниже для получения более подробной информации о сопоставлении шаблонов с помощью gsub:

Как мне работать со специальными символами, такими как \ ^ $.? * | + () [{В моем регулярном выражении ?

https://rstudio.com/wp-content/uploads/2016/09/RegExCheatsheet.pdf

1 голос
/ 04 мая 2020

Здесь вы go.

stringr::str_remove_all(stringi::stri_escape_unicode(t1), "\\\\u0")

дает вывод как

[1] "1002003004005"
...