Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

Rubyにおける文字列操作について、より高度な操作を解説します。

nkfという文字列を操作する標準ライブラリがあります。このライブラリを使うと文字コードの変換はもちろん、カタカナをひらがなに変換、といったことが簡単にできます。

nkfはもともとUnixで使われるコマンドですが、それをRubyで扱えるようにしたライブラリがnkfです。

また、クウォーテーションやタグ、改行が入っていて扱いの難しい文字列でも扱うことができるヒアドキュメントについて解説します。

nkfで文字列を変換

ひらがなからカタカナへ変換、またはその逆の変換をするということは、意外とよく出てきます。例えば、氏名のフリガナ欄への入力値を、すべて全角カタカナへ強制的に変換する、などです。

そのような変換は、nkfを使えばとても簡単にできます!

ひらがなからカタカナへ

ひらがなからカタカナへ、その逆へ変換してみましょう。

nkfそのままでは読み込まれないライブラリなので、先頭でrequireを記述して読み込むよう指定します。

nkfの書式は以下となります。

require "nkf"
NKF.nkf(オプション, 変換する文字列)

[使用例]

require "nkf"

str1 = "ひらがなからカタカナへ"
puts NKF.nkf("-h2 -w", str1)

str2 = "カタカナからひらがなへ"
puts NKF.nkf("-h1 -w", str2)

[実行結果]

ヒラガナカラカタカナヘ
かたかなからひらがなへ

相互に変換できることがわかりました。

先ほどの氏名フリガナ欄の例で、例えばデータベースへ文字列を格納する際など、すべて全角カタカナに統一したいということがあります。実は、先ほどの例は何もしなくても全角に変換されます。

require "nkf"

str1 = "ひらがなから全角カタカナへ"
puts NKF.nkf("-h2 -w", str1)

[実行結果]

ヒラガナカラ全角カタカナヘ

半角のまま変換したい場合は、オプションを足します。

require "nkf"

str1 = "ひらがなから全角カタカナへ"
puts NKF.nkf("-xh2 -w", str1)

[実行結果]

ヒラガナカラ全角カタカナヘ

半角のまま変換されました。

全角スペースを半角スペース2つに変換

nkfは全角スペースを半角スペースにすることができます。

require "nkf"

str1 = "全角スペース を半角スペース1つにする"
puts NKF.nkf("-Z1 -w", str1)

str2 = "全角スペース を半角スペース2つにする"
puts NKF.nkf("-Z2 -w", str2)

[実行結果]

全角スペース を半角スペース1つにする
全角スペース  を半角スペース2つにする

半角スペース1つまたは2つに変換することができました。

nkfはその他多数のオプションがあります。特に文字コード変換に関するオプションが多いです。Rubyのマニュアルに詳細がありますので、参照してください。

他言語では自分で地道に組まないといけないカナ変換や全角スペースの半角化、これらがライブラリ化されているというのは、とても便利ですよね。

ヒアドキュメント

プログラム中で、とても長い文字列を扱うことがあります。そんなときは、ヒアドキュメントを使うと便利です。

[書式]

<< 終了をあらわす記号
・・・文字列・・・
終了をあらわす記号

終了記号はなんでも良いのですが、慣例的にEOF(End Of File)やEOB(End Of Block)を使います。また、そのまま変数に大入できます。

例をあげてみましょう。

str = <<EOB
とっても長い文字列を格納することができます。例えば、こんな感じです。
EOB

puts str

[実行結果]

とっても長い文字列を格納することができます。例えば、こんな感じです。

<<だけでなく、マイナスを加えて<<-とすると、インデントが使えます。ついでに、式展開も加えましょう。

def heredocument_test(param)
  puts <<-EOB
		<<だけでなく、マイナスを加えて
		<<-とすると、インデントが使えます。
		#{param}    
  EOB
end
heredocument_test 'こんな感じです'

[実行結果]

	<<だけでなく、マイナスを加えて
	<<-とすると、インデントが使えます。
	こんな感じです

Rubyのヒアドキュメントですごいのは、オブジェクトとして扱うこともできることです。

puts <<EOS.downcase
abcdefgHIJKLMN
EOS

[実行結果]

abcdefghijklmn

すべて小文字に変換されたということが大事ではなく、downcaseの戻り値をそのままEOSに渡すことができる、ということです。

文字列を返すものならなんでも良いのですが、その例としてdowncaseを使いました。

何に使うのか?

ヒアドキュメントが何なのかがわかったところで、一体何に使うのか?と気になった方も多いでしょう。

ヒアドキュメントの強みは、文字列中にタグや改行、クウォーテーションなどが混入しても全く気にする必要がないということです。

str = <<EOB
<p>こんな感じで、タグやら""やら</p>
<p>何が入って'も'大丈'夫</p>
EOB

puts str

[実行結果]

<p>こんな感じで、タグやら""やら</p>
<p>何が入って'も'大丈'夫</p>

中身がどうであろうと、問題なく表示できています。

まとめ

本記事では、nkfライブラリとヒアドキュメントについて解説しました。

両方とも、活用次第ではプログラミングがとても楽になります。ぜひ自分で試してマスターしてみてくださいね!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。