2016-12-12 6 views
4

空白部分を改行記号(\n)で置換したいのですが、かなり長い文字列ベクトルで置き換えます。、部分文字列が特定の文字数を除外した場合に限ります(n)。部分文字列を> n文字毎に置き換えます(空白の場合は条件付きで改行を挿入してください)

例:

mystring <- "this string is annoyingly long and therefore I would like to insert linebreaks" 

今、私は、各部分は20文字(nchar > 20)よりも大きい長さを持っていることを条件に、すべてのスペースでmystringに改行を挿入します。

したがって、結果の文字列は、このように見えることになっている。

"this string is annoyingly\nlong and therefore I would\nlike to insert linebreaks") 

改行(\n)が後に25、26及び25文字を挿入しました。

どうすればこの問題を解決できますか? gsubstrsplitの組み合わせかもしれませんか?

答えて

8

あなたが任意の21(nchar > 20ので)文字以上に一致するように.{21,}?\s正規表現を使用しますが、最寄りの空白まで、できるだけ少ないなどがあります。

> gsub("(.{21,}?)\\s", "\\1\n", mystring) 
[1] "this string is annoyingly\nlong and therefore I would\nlike to insert linebreaks" 

詳細

  • (.{21,}?) - グループ1は、21文字以上をキャプチャしますが、可能な限り少数です({21,}?遅延文字列です)
  • \\s - 交換が空白の前にテキストを挿入するために、グループ1の後方参照が含まれてい

空白、および改行文字(必要であれば、あまりにも、CRを追加して自由に感じます)。