2013-05-19 51 views
3

是否可以將換行符插入像這樣的字符串中,該字符串會自動調整以便不會拆分單詞?在長字符串中自動插入換行符

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" 

回答

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" 
+0

謝謝。此工作也很完美 – Einnor

+1

[回答已刪除的評論]如果矢量的所有元素都是UTF-8- ,則UTF-8編碼顯然會保留,但如果只包含ascii字符,則其編碼始終爲「未知「, ,其他的編碼被丟棄: 'x < - c(」a「,」あ「);編碼(X);編碼(strwrap(x))'... 您可以使用'Encoding(result)< - 「UTF-8」'修復編碼。 –

+0

Ecoding(x)中似乎存在一個錯誤< - Value 它只將我的一些字符串轉換爲UTF-8。如何支持? – Einnor

4

你可以找到在一些數量的字母第一空間和\n

更換10

例如像這樣

gsub('(.{18})\\s(.*)', '\\1\n\\2',nif) 

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

感謝它的完美。我得學習正則表達式,但還沒有找到一個好的源代碼教程。 – Einnor

+0

@Einnor網上有很多關於網絡的資源,只是谷歌它。有點像'R regerx教程'... – agstudy

+0

謝謝。還有一件事。是否可以添加到你剛剛提供的答案中,它應該在很長的字符串中分割多次? – Einnor