• 締切済み

半角カナ文字の変換

半角カナ文字(濁点あり)の全角カナ文字への変換がうまくいかなくて悩んでいます。 現在、 HashTable.put("ア","ア"); HashTable.put("ン","ン"); このような感じで変換テーブルを作成し、 String strVal = "半角カナ文字"; for(int i = 0; i < strVal.length(); i++){   char c = strVal.charAt(i); if(HashTable.containsKey(c)){ strTmp.append(HashTable.get(c)); } } このような処理をしているのですが、 半角カナ+濁点(例えば、ガ)の変換が、 「カ゛」となってしまいます。 これを「ガ」とするにはどうすればよいでしょうか?? 何か良い方法がありましたら教えてください。 お願いします。

  • Java
  • 回答数3
  • ありがとう数0

みんなの回答

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.3

単なる思いつきですけど、 文字列の後ろから1文字取って、濁点(または半濁点)の場合に濁音変換の処理をしたらどうでしょうか?

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

ロジックだけから言うと、半角カナは濁点・半濁点が直前の(全角)カナを規制する(影響する)ので、いつも1文字分を先読みをしていかないと、全角文字は決められないのではないですか。ですからテーブル索引方式を完遂できず、ややこしくなります。 その点はどうなっていますか。

  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

replaceAllを使えば良さそうな気がします。

grotta_azzurra
質問者

補足

すいません。補足です。 JDKのversionは1.3.1 です。

関連するQ&A

  • Ruby言語にて、全角カナ⇔半角カナ変換がうまくいかずで困っております

    Ruby言語にて、全角カナ⇔半角カナ変換がうまくいかずで困っております。 以下のようにプログラミングをしてます。 結果が、思った通りではないのですが、何が原因でしょうか。 ※★→←★部分で囲んだ部分は半角文字です(ブラウザ上、半角文字が全角に変換されているようなので、  適宜そのような表記を入れました。 ●半角→全角変換 sss = "★→アイウエオ←★".tr('★→ア-ン←★', 'ア-ン') p sss ⇒★→アウオキケ←★ ●全角→半角 sss = "アイウエオ".tr('ア-ン', '★→ア-ン←★') p sss ⇒ア★→イ←★イ★→ウ←★ウ どうか原因を教えてください。

    • ベストアンサー
    • Ruby
  • Ruby1.9で全角文字を半角文字にうまく変換できません。

    Ruby1.9で全角文字を半角文字にうまく変換できません。 英数字までは以下のロジックでうまく出来たのですが、カナが正しく変換されません。 何か良い知恵をどうかご教示のほどお願いいたします。 ※★→←★の間の文字は半角カナです(ブラウザ上全角カナとなってしまうため、便宜上補足しました)。 moji = "イあ1Aa" moji.tr('a-zA-Z0-9ア-ン', 'a-zA-Z0-9★→ア-ン←★') 結果:★→ウ←★あ1Aa 何故か半角のイではなく半角のウとなってしまう。    ※アの場合のみ正しく半角のアに変換される。

    • ベストアンサー
    • Ruby
  • 半角カナ文字と特殊文字の変換

    半角カナ文字と「丸で囲まれた1」や「はしご高」等の特殊文字を SJISからJISへ、JISからSJISへ変換する方法を調べています。 半角カナはJISにないという記述も見たのですが、 サクラエディタで双方へ変換できるのと、 Outlookへ半角カナで送信したところ文字化けせず(全角になっていましたが) 受信できたこと、「はしご高」は受送信で文字変換されているようなので、 何か方法があるのではないかと調べています。 方法や参考資料を教えていただければと思います。 よろしくお願いいたします。

  • 半角カナの文字列操作について

    通常10桁の半角カナの文字列があった場合下記のように String i = "イイイイイイイイイイ"; i.substring(0,5) + ","+i.substring(5,10) Systemout.println(i); として結果を イイイイイ イイイイイと文字列を分割しているのですが 10桁の文字列を半分に区切ろうとした場合 6文字目に濁点が存在した場合 String i = "イイイイバイバイ"; i.substring(0,5) + ","+i.substring(5,10) 結果が イイイイハ ゛イバイ と バの濁点とハが分割されてしまいます。 この半角カタカナの文字列でこの現象を 回避するために 文字列の中で濁点がヒットした場合 文字列の濁点を含んだ文字列の前か後ろで イイイイ ハ゛イバイ もしくは イイイイハ゛ イバイ のように 分割させたいのですがなにか良い方法はありませんでしょうか?? どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • サロゲートペア文字の半角カナ変換について

    VB.net 2005 において開発を行っております。 処理として、文字を半角カナに変換する処理を行っているのですが このたび、サロゲートペア文字に対応することになりました。 現在までは、下記のような処理でおこなっておりましたが  StrConv(’文字が入ります’, VbStrConv.Katakana) サロゲートペア文字は、’??’として返ってきてしまい困っております。 そもそもサロゲートペア文字を半角カナに変換することはできないのでしょうか? またその場合どのような対処で処理を行うのがベターなのでしょうか。。。 サロゲートの文字のみ回避して、他の文字は半角変換するような形になるのでしょうか。 お力の程、お貸しいただけると助かります。 よろしくお願いいたします。

  • カナ変換、半角の仕方がわかりません。

    カナ変換、半角の仕方がわかりません。 カナのキーがありますが、押してもカナ変換されません。 初歩的なことですみません。教えて下さい。 i book G4を使っています。 よろしくお願いします。

    • ベストアンサー
    • Mac
  • 半角カナの存在チェック

    お疲れ様です。 MFCにおいてCStringで取ってきた文字列に半角カナが存在するかのチェックを行いたいのですが問題が出てきました。 (1)文字列が1ByteずつならgetATやMidでとってこれるのですが、漢字やひらがなだと1Byteしかとってとってこないので正確なチェックができない。  一文字ずつ取ってくるのにはどうしたらいいのでしょうか? (2)if((str.Mid(i,1)>='ア'&&str.Mid(i,1)<='ン')){ のような判別だと汎用性がなくなってしまう。 片方でもいいのでアドバイスのほうよろしくお願いします

  • 半角カナから全角カナへ

    お世話になります。 今、フォームから入力された半角カナを全角カナへ変換しようとしているのですが、どうしてもうまく行きません。 処理は以下のようにしています。 jcode::convert(\$str, 'euc'); if($str =~ /[\xA1-\xDF]/){ jcode::h2z_euc(\$str); } (1)まず、半角カナが含まれているかのチェックで[\xA1-\xDF]を使用していますが色々調べたところ、実際は (?:\x8E[\xA6-\xDF]) が正しいようなのですが、この場合文字数が少ないとひっかかってくれません。例えば半角のア1文字や2文字など。また、文字数が多くても半角英数と半角カナが混在しているとひっかからない場合もあります。 上記の式だとひっかかってくれますが、この判定で構わないのでしょうか。 (2)上記の式できちんと置換されるものとされないで漢字のように文字化けするものと出てきてしまいます。 例えば「インターフェース」などという半角は全滅です。 「バージョン」などは大丈夫でした。 間違いなど教えて頂ければと思います。 宜しくお願い致します。

    • ベストアンサー
    • Perl
  • eval 半角カナが文字化けする

    初めて投稿させていただきます。 半角カナが混ざっている文字列をevalすると、文字化けする場合があります。 どうすれば文字化けしないようになりますか? ちなみに全ての半角カナを全角カナに置換してevalを行いその後、半角カナに戻すということをやったのですが、もともと全角カナ文字まで半角カナに変換されてしまいました。できれば全角カナは全角カナ、半角カナは半角カナのまま文字化けせずにevalする方法を教えてください。

    • 締切済み
    • PHP
  • エクセル2003でセル内の文字のうち、半角カナ文字だけを全角かなに変換

    エクセル2003でセル内の文字のうち、半角カナ文字だけを全角かなに変換する方法 数字や英文字は半角のまま残して、読みにくい半角カナだけを全角かなに変える方法はあるでしょうか? JIS()ですと、すべての文字が全角に変わってしまいます。 詳しい方、どうかよろしくお願い致します。

専門家に質問してみよう