🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Q&A

解決済

3回答

1593閲覧

記号も半角にする、記号の範囲。

tkshp

総合スコア174

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

1グッド

1クリップ

投稿2019/12/12 01:39

前提・実現したいこと

半角英数字に加えて、記号も全角から半角に変換するにはどのように書けばよいでしょうか?
ご教示お願い致します。

試したこと

半角英数字のみの変換はできました。
記号はどのように書けば、記号の範囲を示すことができますか?

ruby

1def zenToHan(s) 2 s.tr('0-9a-zA-Z','0-9a-zA-Z') 3end 4 5puts zenToHan("A4") #A4
DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

Unicodeの方法は、すでに出ているので、別の方法で。

def zenToHan(s) s.tr('0-9a-zA-Z','0-9a-zA-Z').tr(',.:;?!´`^_—/\|‘’“”()[]{}〈〉+−=<>$%#&*@',',.:;?!`^_-/\|\'\'\"\"()[]{}<>') end puts zenToHan("A4") #A4

こんな感じで、シンプルに手動でやっても、いいと思います。
Unicodeの方が綺麗ですが。

投稿2019/12/12 02:24

light180

総合スコア161

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkshp

2019/12/12 03:00 編集

ご回答ありがとうございます。 Unicodeを検索してみたのですが、範囲に関する記述が見つからなくて、ご存知でしたら、Unicodeの綺麗な書き方を教えていただけませんか?
guest

0

「unicode 一覧」でぐぐればコード表が出てきます。
それで範囲を調べてみては。

投稿2019/12/12 01:42

y_waiwai

総合スコア88040

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

そう単純ではありません。

一見、ASCIIの'!-~'に対応する全角文字が!-~に綺麗に並んでいますが、いくつか注意点があって、

  • スペースは別の場所
  • U+005C\に対応するのはだが、を対応させたいかもしれない。
  •  はU+00A5¥に対応させたいかもしれない。
  • " 'に対応するのは だが、“”‘’も対応させたいかもしれない。
  • -に対応するのはだが、など他にも可能性のある文字がある。
  • ~に対応するのはU+FF5Eだが、U+301Cを対応させたいかもしれない。
  •  JIS的に言えばを対応させるべきかもしれない。
  • ASCII以外にも全半角の区別がある記号は£¯₩ £ ̄₩などある。
  •  加えて言えばに対応するのは¯がありうる。

この辺を気にしないのであれば最も単純にはs.tr(' !-~',' !-~')でいけるかと思います。

投稿2019/12/14 04:16

ikadzuchi

総合スコア3047

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkshp

2019/12/16 05:24

ご回答ありがとうございます。 勉強になりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問