icon
icon

Rubyの文字列を全角から半角へ変換する方法【初心者向け】

初心者向けにRubyで文字列を全角から半角へ変換する方法を使う方法について解説しています。取得したデータを処理のために変換する際に必要な手法です。実際にソースコードを書いて説明しているので、ぜひ使い方を覚えておきましょう。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Rubyで文字列を全角から半角へ変換する方法について解説します。

 
そもそもRubyについてよく分からないという方は、Rubyとは何なのか解説した記事を読むとさらに理解が深まります。

なお本記事は、TechAcademyのオンラインブートキャンプRuby講座の内容をもとに紹介しています。

 

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

全角から半角へ変換する方法について詳しく説明していくね!

大石ゆかり

お願いします!

 

文字列を全角から半角へ変換する方法

入力フォームなどで入力された値や、CSVファイルの値などで、全角で入っている英数、カナなどを半角に変換したいケースが発生する事があります。

その場合、Rubyの標準ライブラリである、`nkf` を使用することで全角から半角への変換が行えます。

nkfとは、`Network Kanji Filter` の略で、文字列の文字コードや改行コードを変換するためのライブラリです。

文字コードや改行コード以外にも、

  • ひらがなをカタカナへ変換
  • 全角カタカナを半角カタカナへ変換

などの用途に利用できる、大変便利なライブラリです。

 

また、他の方法として、 `trメソッド` を利用し、全角から半角へ変換する方法があります。

str.tr(from_str, to_str)

trメソッドは、文字列の中で引数from_strに並べた文字を、引数to_strに並べた文字に置き換え、新しい文字列を返します。

trメソッドの引数では、正規表現の文字クラスのように、範囲指定、否定などができます。

"文字列".tr('0-9a-zA-Z','0-9a-zA-Z')
=> 全角英数字が半角英数字に変換される

"文字列".tr("あ-ん", "ア-ン")
=> ひらがながカタカナに変換される

 

実際に書いてみよう

実際に、nkfライブラリを使用した方法と、trメソッドを利用した方法で変換を行っていきます。

trメソッドを使用して英数字を全角から半角へ変換する

str = "ABCde0123"
p str.tr('0-9a-zA-Z','0-9a-zA-Z')

# 実行結果:ABCde0123

英数字のみであれば、このようにtrメソッドを使用するのが簡単ですね。

ただし、日本語が入った場合、文字コードの問題などでうまく変換できない可能性があります。

そのため、様々な文字が入ってくることが分かっている、可能性がある場合は、nkfを使用するのが良いでしょう。

 

nkfライブラリを使用して、全角から半角へ変換する

require 'nkf'

str = "アイウエオABC012"
# nkfライブラリを使用して変換を実行
p NKF.nkf('-w -Z4', str)

# 実行結果:アイウエオABC012

NKF.nkf(‘-w -Z4’, str) の、 -wZ4 はnkfのオプションです。

-w は文字コード、UTF-8として出力する、 -Z4は全角を半角に変換する、というオプションになります。

nkfライブラリには、他にも様々なオプションがあり、ひらがなをカタカナへ、などの変換も可能です。

 

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

監修してくれたメンター

中廣 誠

職種: WEBエンジニア

過去の開発実績・業務内容:
一部上場企業にて、WEBアプリケーションの受託開発、自社WEBサービス開発、自社ゲーム開発に従事
現在はフリーで活動し、ECサイト開発/運営、課題を解決するためのシステムコンサルタントなどを実施

趣味など
フリーでの活動を期に沖縄へ移住したので、海でのスキンダイビング、釣りなどを趣味にしています。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。

挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。