質問: ### 実現したいこと 下記のように文字列を変換しようと考えています。 1. 英数字を全角に変換する 2. 半角カタカナを全角カタカナに変換する 3. 濁点/半濁点は前の文字と合成 4. ひらがなをカタカナに変換する 5. 全角文字を半角文字に変換する 6. 小さい「っ」「ぁ」は大きくする ### 発生している問題 上記のうち、下記の変換方法が不明です。 * 英数字を全角に変換する * 濁点/半濁点は前の文字と合成 * 小さい「っ」「ぁ」は大きくする 上記以外のものは下記のように対応したので、 できれば同様にNKFでできたらいいなあと考えています。 (が、どうすればいいのかわからず悩んでしまっている状態です) ``` //半角カタカナを全角カタカナに変換する NKF.nkf('-m0Z1 -w ', "ダダダ-タ ゙タ ゙ァ") // ひらがなをカタカナに変換する NKF.nkf('-m0Z1 -w --katakana', "よしおナンダ") // 全角文字を半角文字に変換する NKF.nkf('-m0Z1 -w ', "abcあああ0100") ``` ### 試したこと 下記のようなコードを試してみました。 ``` // 「英数字を全角に変換する」は、下記を試しました。 // 日本語入力が文字化けする+半角にならない NKF.nkf("-h1w",NKF.nkf('-m0Z1 -XSs', "abcあああ0100")) /* * 「濁点/半濁点は前の文字と合成」 * 「小さい「っ」「ぁ」は大きくする」 * については、そもそも方法が不明です。 */ ``` ### 補足情報(言語/FW/ツール等のバージョンなど) Ruby 2.0.0p643 文字コード UTF-8
回答: 文字化けは、`-Ss`と入出力をシフトJISだと指定していますが、実査にはシフトJIS以外の文字コードを使っているとかじゃないでしょうか。 なお、nkfには、 * 英数字を全角に変換する * 濁点/半濁点は前の文字と合成 * 小さい「っ」「ぁ」は大きくする という機能はないので、それぞれ`String`クラスの`gsub`か`tr`で実現するしか無いです。