在长字符串中自动插入换行符

时间:2013-05-19 11:24:14

标签: regex r gsub

是否可以在这样的字符串中插入换行符,这些字符串会自动调整以便不分割单词?

 nif <- as.character(c("I am a string", "So am I", 
     "I am also a string but way to long"))

我在帖子中找到了这个code,但它会分割单词并在每个字符串后添加一个换行符,我想避免使用

  gsub('(.{1,20})', '\\1\n',nif)

我想要的输出是:

 "I am a string"    "So am I"     "I am also a string but \n way to long" 

2 个答案:

答案 0 :(得分:14)

您也可以使用strwrap

strwrap(nif, 20)
# [1] "I am a string"      "So am I"            "I am also a string"
# [4] "but way to long"   
sapply( strwrap(nif, 20, simplify=FALSE), paste, collapse="\n" )
# [1] "I am a string"                       "So am I"                            
# [3] "I am also a string\nbut way to long"

答案 1 :(得分:4)

您可以在一些字母后找到第一个空格,并将其替换为\n

例如像

这样的东西
 gsub('(.{18})\\s(.*)', '\\1\n\\2',nif)

[1] "I am a string"                       "So am I"                            
    "I am also a string\nbut way to long"