下面的代码不会在每第三个字符后插入新行,这就是我认为的str_wrap。显然,还有其他一些基本逻辑。当字符串包含一些特殊字符时,我也会得到怪异的结果。
t<-c("The adds fundamental principle”, The discriminatory ")
str_wrap(t,3)
结果是
> str_wrap(t,3)
[1] "The\nadds\nfundamental\nprinciple"
答案 0 :(得分:1)
str_wrap
是stringi::stri_wrap
的包装,不会破坏单个单词。它的预期用途是将文本包装在段落中,而您不想在其中将单词分成多行。如果要每三个字符换行,则可以提取三个字符模式.{3}
并将它们与换行符连接在一起,如图所示。请注意留有空格:如果您要先删除空格,则可以。第二个匹配选项{0,2}$
表示将返回末尾的其余字符,而不是默默地删除它们。
t <- c("The adds fundamental principle”, The discriminatory a")
library(stringr)
#> Warning: package 'stringr' was built under R version 3.5.1
t %>%
str_extract_all(".{3}|.{0,2}$") %>%
`[[`(1) %>%
str_c(collapse="\n") %>%
writeLines()
#> The
#> ad
#> ds
#> fun
#> dam
#> ent
#> al
#> pri
#> nci
#> ple
#> ”,
#> The
#> di
#> scr
#> imi
#> nat
#> ory
#> a
由reprex package(v0.2.0)于2018-07-25创建。
答案 1 :(得分:0)
除了Calum You很好的答案之外,您还可以通过以下方式更简单地编写此代码:将任何3个字母的代码块与换行符一起替换:
t = c("The adds fundamental principle, The discriminatory a")
library(stringr)
out = str_replace_all(t, paste0("(.{3})"), "\\1\n")
cat(out)
#> The
#> ad
#> ds
#> fun
#> dam
#> ent
#> al
#> pri
#> nci
#> ple
#> , T
#> he
#> dis
#> cri
#> min
#> ato
#> ry
#> a
由reprex软件包(v0.3.0)创建于2020-08-16