.png)

Rubyにおける文字列操作について、より高度な操作を解説します。
nkfという文字列を操作する標準ライブラリがあります。このライブラリを使うと文字コードの変換はもちろん、カタカナをひらがなに変換、といったことが簡単にできます。
nkfはもともとUnixで使われるコマンドですが、それをRubyで扱えるようにしたライブラリがnkfです。
また、クウォーテーションやタグ、改行が入っていて扱いの難しい文字列でも扱うことができるヒアドキュメントについて解説します。
nkfで文字列を変換
ひらがなからカタカナへ変換、またはその逆の変換をするということは、意外とよく出てきます。例えば、氏名のフリガナ欄への入力値を、すべて全角カタカナへ強制的に変換する、などです。
そのような変換は、nkfを使えばとても簡単にできます!
ひらがなからカタカナへ
ひらがなからカタカナへ、その逆へ変換してみましょう。
nkfそのままでは読み込まれないライブラリなので、先頭でrequireを記述して読み込むよう指定します。
nkfの書式は以下となります。
1 2 |
require "nkf" NKF.nkf(オプション, 変換する文字列) |
[使用例]
1 2 3 4 5 6 7 |
require "nkf" str1 = "ひらがなからカタカナへ" puts NKF.nkf("-h2 -w", str1) str2 = "カタカナからひらがなへ" puts NKF.nkf("-h1 -w", str2) |
[実行結果]
1 2 |
ヒラガナカラカタカナヘ かたかなからひらがなへ |
相互に変換できることがわかりました。
先ほどの氏名フリガナ欄の例で、例えばデータベースへ文字列を格納する際など、すべて全角カタカナに統一したいということがあります。実は、先ほどの例は何もしなくても全角に変換されます。
1 2 3 4 |
require "nkf" str1 = "ひらがなから全角カタカナへ" puts NKF.nkf("-h2 -w", str1) |
[実行結果]
1 |
ヒラガナカラ全角カタカナヘ |
半角のまま変換したい場合は、オプションを足します。
1 2 3 4 |
require "nkf" str1 = "ひらがなから全角カタカナへ" puts NKF.nkf("-xh2 -w", str1) |
[実行結果]
1 |
ヒラガナカラ全角カタカナヘ |
半角のまま変換されました。
全角スペースを半角スペース2つに変換
nkfは全角スペースを半角スペースにすることができます。
1 2 3 4 5 6 7 |
require "nkf" str1 = "全角スペース を半角スペース1つにする" puts NKF.nkf("-Z1 -w", str1) str2 = "全角スペース を半角スペース2つにする" puts NKF.nkf("-Z2 -w", str2) |
[実行結果]
1 2 |
全角スペース を半角スペース1つにする 全角スペース を半角スペース2つにする |
半角スペース1つまたは2つに変換することができました。
nkfはその他多数のオプションがあります。特に文字コード変換に関するオプションが多いです。Rubyのマニュアルに詳細がありますので、参照してください。
他言語では自分で地道に組まないといけないカナ変換や全角スペースの半角化、これらがライブラリ化されているというのは、とても便利ですよね。
ヒアドキュメント
プログラム中で、とても長い文字列を扱うことがあります。そんなときは、ヒアドキュメントを使うと便利です。
[書式]
1 2 3 |
<< 終了をあらわす記号 ・・・文字列・・・ 終了をあらわす記号 |
終了記号はなんでも良いのですが、慣例的にEOF(End Of File)やEOB(End Of Block)を使います。また、そのまま変数に大入できます。
例をあげてみましょう。
1 2 3 4 5 |
str = <<EOB とっても長い文字列を格納することができます。例えば、こんな感じです。 EOB puts str |
[実行結果]
とっても長い文字列を格納することができます。例えば、こんな感じです。
<<だけでなく、マイナスを加えて<<-とすると、インデントが使えます。ついでに、式展開も加えましょう。
1 2 3 4 5 6 7 8 |
def heredocument_test(param) puts <<-EOB <<だけでなく、マイナスを加えて <<-とすると、インデントが使えます。 #{param} EOB end heredocument_test 'こんな感じです' |
[実行結果]
1 2 3 |
<<だけでなく、マイナスを加えて <<-とすると、インデントが使えます。 こんな感じです |
Rubyのヒアドキュメントですごいのは、オブジェクトとして扱うこともできることです。
1 2 3 |
puts <<EOS.downcase abcdefgHIJKLMN EOS |
[実行結果]
1 |
abcdefghijklmn |
すべて小文字に変換されたということが大事ではなく、downcaseの戻り値をそのままEOSに渡すことができる、ということです。
文字列を返すものならなんでも良いのですが、その例としてdowncaseを使いました。
何に使うのか?
ヒアドキュメントが何なのかがわかったところで、一体何に使うのか?と気になった方も多いでしょう。
ヒアドキュメントの強みは、文字列中にタグや改行、クウォーテーションなどが混入しても全く気にする必要がないということです。
1 2 3 4 5 6 |
str = <<EOB <p>こんな感じで、タグやら""やら</p> <p>何が入って'も'大丈'夫</p> EOB puts str |
[実行結果]
1 2 |
<p>こんな感じで、タグやら""やら</p> <p>何が入って'も'大丈'夫</p> |
中身がどうであろうと、問題なく表示できています。
まとめ
本記事では、nkfライブラリとヒアドキュメントについて解説しました。
両方とも、活用次第ではプログラミングがとても楽になります。ぜひ自分で試してマスターしてみてくださいね!
Ruby on Railsのフリーランスは高収入でおすすめ!
Rubyができる方は多くはいないのが現状です。 プロジェクトは右肩上がりで増えているので、エンジニアが全く足りておりません。 Rubyの実務経験が1年以上ある方はフリーランスになることもできるので、ぜひご興味があればポテパンの無料カウンセリングをご利用下さいませ! Ruby案件に関する情報は下記にまとまっていますのでぜひご覧下さい。Ruby on Rails案件のイマがわかる!知って見つかる最適案件

ポテパンが提供するサービスについて
本メディア「ポテパンスタイル」を運営する株式会社ポテパンは、エンジニアキャリア領域で複数サービスを提供しています。
ポテパンフリーランス
.png)
フリーランスエンジニアの方に高単価案件をご紹介しております。弊社ではフリーランス案件を常時300件ほど保有しており、その中からあなたに適した案件をご案内いたします。また、これから独立してフリーランスになる方の無料個別相談も承っております。フリーランスになった後の案件獲得方法やお金面(税金や保険など)についてお答えいたします!フリーエンジニアになりたい方向けのコンテンツも盛りだくさんです。
ポテパンキャリア
.png)
エンジニア職専門の転職エージェントです。ポテパンキャリアでは、技術のわかるエージェントがあなたの転職をサポートします。エージェント自身がエンジニアなので、あなたと同じ目線で仕事内容や今後のキャリアについて一緒に考えることができます。年収800円以上のハイスペック転職をご希望の方は「ポテパンプロフェッショナル」もご用意しておりますのでご利用下さいませ。
ポテパンキャンプ
.png)
ポテパンキャンプでは、RubyにてゼロからオリジナルのECサイトを作り上げてる3ヶ月間の実践型カリキュラムを提供しております。すでに本スクールの卒業生は、エンジニア職として様々な企業様に就職しております。なお、本スクールは受講料10万円と他社スクールに比べ格安となっており、またポテパンからご紹介させていただいた企業へ就職が決まった場合は、全額キャッシュバックいたします。
株式会社ポテパンは、企業とエンジニアの最適なマッチングを追求しています。気になるサービスがあれば、ぜひ覗いてみてください!

関連記事
