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ライブラリには、他にも様々なオプションがあり、ひらがなをカタカナへ、などの変換も可能です。
監修してくれたメンター
中廣 誠
職種: WEBエンジニア 過去の開発実績・業務内容: 趣味など |
内容分かりやすくて良かったです!
ゆかりちゃんも分からないことがあったら質問してね!
分かりました。ありがとうございます!
TechAcademyでは、初心者でもRuby on Railsを使ったプログラミングを習得できるオンラインブートキャンプRuby講座を開催しています。
挫折しない学習方法を知れる説明動画や、現役エンジニアとのビデオ通話とチャットサポート、学習用カリキュラムを体験できる無料体験も実施しているので、ぜひ参加してみてください。