6

私は、人間が読める wiki のような違いを 2 つの HTML を含むテキストの間に作成しようとしています。私は diff-lcs を使用しています。最初のステップは、文字列 (文字の配列) を文の配列に分離することですが、句読点はそのままにしておきます。

"I am a lion. Hear me roar! Where is my cub? Never mind, found him.".magic_split(/[.?!]/)
# => "I am a lion." "Hear me roar!" "Where is my cub?" "Never mind, found him."

これでうまくいくはずです

"I am a lion. Hear me roar! Where is my cub? Never mind, found him.".gsub(/[.?!]/, '\1|').split('|')

gsub を除いて、文字の挿入に問題があるよう.?!です。代わりにこれを返します

"I am a lion| Hear me roar| Where is my cub| Never mind, found him|"

非破壊的な分割を行う最も簡単な方法は何ですか? そのように、分割する文字を保持します。

4

2 に答える 2

13

scanトリックを行う必要があります(stripそこにスローして、末尾のスペースを取り除きます)。

s = "I am a lion. Hear me roar! Where is my cub? Never mind, found him."
s.scan(/[^\.!?]+[\.!?]/).map(&:strip) # => ["I am a lion.", "Hear me roar!", "Where is my cub?", "Never mind, found him."]
于 2013-03-28T16:50:51.683 に答える
3

I think that should be \0

>> string = "I am a lion. Hear me roar! Where is my cub? Never mind, found him."
>> string.gsub(/[.?!]/, '\0|') 
   # "I am a lion.| Hear me roar!| Where is my cub?| Never mind, found him.|"
于 2013-03-28T16:52:24.340 に答える