質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

Q&A

解決済

5回答

3135閲覧

濁点や小さい文字を変換する方法

rell2

総合スコア15

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

文字コード

文字コードとは、文字や記号をコンピュータ上で使用するために用いられるバイト表現を指します。

0グッド

1クリップ

投稿2020/08/12 07:00

前提・実現したいこと

ひらがなのみで構成される文字列のなかに、濁点や半濁点の文字が含まれていたら、それらを清音に変換し、小さい文字が含まれいていたら、大きい文字に変換する方法が知りたいです。言語は、javaでお願いします。

例 入力:ぐりこ 出力:くりこ
入力:ぱいなっぷる 出力;:はいなつふる

試したこと

アスキーコードを利用しようと思いましたが、理解できませんでした。

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

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

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

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

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

m.ts10806

2020/08/12 07:31

質問ではなく作業依頼でしょうか。 理解できない内容を無理にしようとしても余計理解できなくなるだけなので、 もっと簡単なところから1つずつやってったほうが良いと思います。
dameo

2020/08/13 02:31

濁点半濁点はjava.text.Normalizerで分解したり結合したり出来ます。 import java.text.*; public class XXX { public static void main(String[] args) { System.out.println(Normalizer.normalize(args[0], Normalizer.Form.NFD)); } } 小さい文字→大きい文字はテーブル変換くらいしか知りませんね。
guest

回答5

0

ベストアンサー

Java

1import java.util.Scanner; 2 3class Test { 4 static final String t = 5 "ああいいううええおおかかききくくけけここささししすすせせそそ" + 6 "たたちちつつつててととなにぬねのはははひひひふふふへへへほほほ" + 7 "まみむめもややゆゆよよらりるれろわわゐゑをん"; 8 // ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞ 9 // ただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽ 10 // まみむめもゃやゅゆょよらりるれろゎわゐゑをん 11 12 static char convChar(char c) { 13 if (c >= 'ぁ' && c <= 'ん') c = t.charAt(c - 'ぁ'); 14 return c; 15 } 16 17 static String convStr(String s) { 18 StringBuilder sb = new StringBuilder(); 19 for (int i = 0; i < s.length(); i++) 20 sb.append(convChar(s.charAt(i))); 21 return sb.toString(); 22 } 23 24 public static void main(String[] args) { 25 Scanner sc = new Scanner(System.in); 26 while (sc.hasNext()) { 27 String s = sc.next(); 28 String s2 = convStr(s); 29 System.out.println(s2); 30 } 31 } 32}

追記
コードを変更しました。
謎の配列 t の 意味が分かるようにコメントを追加しました。
String の += は効率が悪そうなので、StringBuffer の append に変更しました。

追記2
さらにコードを変更しました。
変換表を文字列で持てば、文字コードの足し算引き算は不要でした。

投稿2020/08/12 12:15

編集2020/08/12 15:17
kazuma-s

総合スコア8224

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

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

0

アスキーコードを利用しようと思いましたが

これはアルファベットの大小文字変換のような文字コードの加減算で求めたいということだと思いますが、
お勧めしません。
ひらがなの文字コードの濁音半濁音小文字は、位置にある程度規則性があるもののアルファベットほど単純なものではありません。
文字コードを利用せず素直に対応表を作る方が楽です。

なお、ひらがなの文字コードはアスキーコードではありません。

投稿2020/08/12 14:45

ikadzuchi

総合スコア3047

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

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

0

平仮名、片仮名、半角カナ変換は割と面倒で、検証も大変な処理ですので、

https://mariten.github.io/kanatools-java/ja/kana-converter/ ないしは、
http://site.icu-project.org/download
を利用されるのが良いでしょう。ライブラリであるjarファイルをダウンロードし、お使いの環境にて利用してください。

以下は、kana-converterを使った変換の例です。日本語でも解説があります。
なお、このライブラリでもいくつか変換できない処理があるので、それについては自作は必要でしょう。

java

1 public String convert(String target) { 2 String 半角カナ = KanaConverter.convertKana(target, KanaConverter.OP_ZEN_HIRA_TO_HAN_KATA); 3 4 String 濁点抜き = 半角カナ.replace("゙", "").replace("゚", ""); 5 6 String 濁点抜きひらがな = KanaConverter.convertKana(濁点抜き, KanaConverter.OP_HAN_KATA_TO_ZEN_HIRA); 7 8 String 大文字化 = 濁点抜きひらがな.replace("っ", "つ").replace("ゃ", "や").replace("ゅ", "ゆ").replace("ょ", "よ"); 9 10 return 大文字化; 11 }

投稿2020/08/12 07:59

A-pZ

総合スコア12011

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

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

0

一発で変換する方法はなさそうなので、変換テーブルを作って変換するのが早いかと思います。
例えば、HashMapにkeyを"が"、valueを"か"で登録しておけば、get("が")変換できます。
登録されていなければ、元のままの文字を返すようにしておけば、一応変換にはなるかと。

投稿2020/08/12 07:45

amiya

総合スコア1218

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

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

0

濁音、半濁音の文字と、静音の文字を対比したテーブルを作っておいて、それで文字変換すればいいです

投稿2020/08/12 07:33

y_waiwai

総合スコア87774

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問