如何从R中的字符串中删除n个相同的字符
How to remove n number of identical characters from string in R
我在 R 中有一个字符串,其中单词是 interspaced,具有随机数的字符 \n
:
mystring = c("hello\n\ni\n\n\n\n\nam\na\n\n\n\n\n\n\ndog")
我想替换 n 个重复的 \n
元素,以便单词之间只有一个 space 字符。我目前可以按如下方式执行此操作,但我想要一个更简洁的解决方案:
mystring %>%
gsub("\n\n", "\n", .) %>%
gsub("\n\n", "\n", .) %>%
gsub("\n\n", "\n", .) %>%
gsub("\n", " ", .)
[1] "hello i am a dog"
实现此目标的最佳方法是什么?
我们可以用+
表示one or more
次重复
gsub("\n+", " ", mystring)
[1] "hello i am a dog"
我们可以使用与 akrun 相同的逻辑 str_replace_all
:
library(stringr)
str_replace_all(mystring, '\n+', ' ')
[1] "hello i am a dog"
在这种情况下,您可能会发现 str_squish()
方便。这是为了解决这个确切的问题,而其他解决方案显示了解决更一般情况的好方法。
library(stringr)
mystring = c("hello\n\ni\n\n\n\n\nam\na\n\n\n\n\n\n\ndog")
str_squish(mystring)
# [1] "hello i am a dog"
如果您查看 str_squish()
的代码,它基本上是 str_replace_all()
.
的包装器
str_squish
function (string)
{
stri_trim_both(str_replace_all(string, "\s+", " "))
}
另一种可能的解决方案,基于stringr::str_squish
:
library(stringr)
str_squish(mystring)
#> [1] "hello i am a dog"
我在 R 中有一个字符串,其中单词是 interspaced,具有随机数的字符 \n
:
mystring = c("hello\n\ni\n\n\n\n\nam\na\n\n\n\n\n\n\ndog")
我想替换 n 个重复的 \n
元素,以便单词之间只有一个 space 字符。我目前可以按如下方式执行此操作,但我想要一个更简洁的解决方案:
mystring %>%
gsub("\n\n", "\n", .) %>%
gsub("\n\n", "\n", .) %>%
gsub("\n\n", "\n", .) %>%
gsub("\n", " ", .)
[1] "hello i am a dog"
实现此目标的最佳方法是什么?
我们可以用+
表示one or more
次重复
gsub("\n+", " ", mystring)
[1] "hello i am a dog"
我们可以使用与 akrun 相同的逻辑 str_replace_all
:
library(stringr)
str_replace_all(mystring, '\n+', ' ')
[1] "hello i am a dog"
在这种情况下,您可能会发现 str_squish()
方便。这是为了解决这个确切的问题,而其他解决方案显示了解决更一般情况的好方法。
library(stringr)
mystring = c("hello\n\ni\n\n\n\n\nam\na\n\n\n\n\n\n\ndog")
str_squish(mystring)
# [1] "hello i am a dog"
如果您查看 str_squish()
的代码,它基本上是 str_replace_all()
.
str_squish
function (string)
{
stri_trim_both(str_replace_all(string, "\s+", " "))
}
另一种可能的解决方案,基于stringr::str_squish
:
library(stringr)
str_squish(mystring)
#> [1] "hello i am a dog"