Ruby: 制御文字の除去

普通にテキストを打っている分にはデータとして入ってくることはないんだけど、WEBフォームの入力エリア位にどこからコピーペーストをしてくるとユーザーが認知していない文字が一緒に混ざってくることがある。と言うときのためのメモです。

制御文字って?

僕らのWikipediaのリンク
https://ja.wikipedia.org/wiki/%E5%88%B6%E5%BE%A1%E6%96%87%E5%AD%97
今回この記事を残しておこうとした発端は垂直タブ( n)というものでした。初めて認識した。

制御文字を探して置換する

制御文字はrubyの正規表現で [:cntrl:] で取得できる。
参照: https://docs.ruby-lang.org/ja/latest/doc/spec=2fregexp.html のPOSIX 文字クラス 部分
なのでgsubで正規表現で制御文字を検索してあげる。このとき、そのテキストには改行やタブなどが入っているのでそいつらを除いて上げる必要があった。

"long text text ....".gsub(/(?![rnt ])[[:cntrl:]]/, '')

こんな感じで制御文字を置換した。