記事

Rubyで絵文字を削除するのは簡単ではなさそう

scrubで解決できると思っていた時期がありました

"いっけなーい?限界限界??私、圧倒的成長ビジネスマン?休日出勤とサビ残で圧倒的成長するのが大好き✨でもある日体が動かなくなって鬱っぽくなってもう大変?いやいやビジネスマンのくせに24時間働けないとか死刑も同然?というかクビだ??次回「死ぬ気でやれよ、死なないから」お楽しみに✋?✨".scrub!
 => "いっけなーい?限界限界??私、圧倒的成長ビジネスマン?休日出勤とサビ残で圧倒的成長するのが大好き✨でもある日体が動かなくなって鬱っぽくなってもう大変?いやいやビジネスマンのくせに24時間働けないとか死刑も同然?というかクビだ??次回「死ぬ気でやれよ、死なないから」お楽しみに✋?✨" 

は?と思って調べたらscrubメソッドはあくまで不正なバイト列を含む場合に別の文字列に置き換えた新しい文字列を返すってだけ。絵文字は不正ではないっぽい

解決策その1

.each_char.select{|c| c.bytes.count < 4 }.join('')を使う

> "いっけなーい?限界限界??私、圧倒的成長ビジネスマン?休日出勤とサビ残で圧倒的成長するのが大好き✨でもある日体が動かなくなって鬱っぽくなっても う大変?いやいやビジネスマンのくせに24時間働けないとか死刑も同然?というかクビだ??次回「死ぬ気でやれよ、死なないから」お楽しみに✋?✨".each_char.select{|c| c.bytes.count < 4 }.join('')
 => "いっけなーい限界限界私、圧倒的成長ビジネスマン休日出勤とサビ残で圧倒的成長するのが大好き✨でもある日体が動かなくなって鬱っぽくなってもう大変いやいやビジネスマンのくせに24時間働けないとか死刑も同然というかクビだ次回「死ぬ気でやれよ、死なないから」お楽しみに✋✨" 

削除出来てるけど一部残ってる

解決策その2

.encode('SJIS', 'UTF-8', invalid: :replace, undef: :replace, replace: '').encode('UTF-8')を使う

2.2.1 :068 > "いっけなーい?限界限界??私、圧倒的成長ビジネスマン?休日出勤とサビ残で圧倒的成長するのが大好き✨でもある日体が動かなくなって鬱っぽくなっても う大変?いやいやビジネスマンのくせに24時間働けないとか死刑も同然?というかクビだ??次回「死ぬ気でやれよ、死なないから」お楽しみに✋?✨".encode('SJIS', 'UTF-8', invalid: :replace, undef: :replace, replace: '').encode('UTF-8')
 => "いっけなーい限界限界私、圧倒的成長ビジネスマン休日出勤とサビ残で圧倒的成長するのが大好きでもある日体が動かなくなって鬱っぽくなってもう大変いやいやビジネスマンのくせに24時間働けないとか死刑も同然というかクビだ次回「死ぬ気でやれよ、死なないから」お楽しみに"