2016-12-18 9 views
1

Androidスタジオで、文章の各文字の出現数をカウントできるアプリケーションを作成しています。例:ユニコード文字を動的に繰り返します。

// Input 
String sentence = "abbdddd"; 

// Output 
a:1; b:2; c:0; d:4; e:0; f:0; // And so on 

しかし、私もそれがアムハラ語の文字をカウントしたいので、私は中に入れた場合:

String sentence = "abcሀሁሂ"; 

それは私を与えるだろう:

a:1; b:1; c:1 ... ሀ:1; ሁ:1; ሂ:1; 

を現時点では、私は2つのArrayLists、cycleとletterCountを持っています。サイクルには可能なすべての文字が入力されています。 letterCountはサイクルと同じサイズで、実行時にはすべての値がゼロに等しい。文章を入力すると、それは周期的に一致するものが検索されます(英語またはアムハラ語の場合、それは見つかるはずです)。一致するものが見つかると、それはletterCountに行き、対応する値に1を加えます。したがって、文の最初の文字が「a」の場合、letterCountの最初の値に移動して1を加算します。それが "c"の場合は、letterCountの3番目の値に移動して1を加算します。サイクルとletterCount内部 値は、forループを使用して動的に追加されます。

for (int i = 97; i < 123; i++) { 
     char val = (char)i; // This is where the problem lies...I think 
     cycle.add(val); 
     letterCount.add(0); 
    } 

しかし、やって「(チャー)i」はアムハラ語の文字が含まれていないASCII文字に変換します。ですから、ASCIIをループしてユニコード文字をループしてサイクルに追加する方法はありますか?どんな助けでも大歓迎です。

答えて

1

U + 1200からU + 137Fまでの範囲のUnicodeは、エチオピアとアムハラ語をカバーしているため、BMP(Basic Multilingual Plane)に存在し、16ビットの値で表現できます。

はやって "(チャー)私は、" ASCII文字[???]

Falseに変換します。他の言語とは異なり、Javaのcharは2バイトと大きいので、あなたの目的には十分です。

詳しくは、Comparing a char to a code-point?

+0

ありがとうございました!しかし、私が意味したのは、私が検索したことから、Amharicのユニコード値には文字(例:\ u126B)が含まれていて、数字だけでなく文字もループする方法がわかりません。私はまた、ArrayListsにハードコードしたくありません。なぜなら、Amharic文字がたくさんあるからです。私は私の質問に言い返すべきですか? –

+0

私はあなたが何を求めようとしているかまだ分かりません。どのパーツをどのようにするかを正確に表現する方法を決定する必要があります。たとえば、Unicodeのコードポイントを16進表記の整数として書くことができると思いますか? 'int i = 0x126B' –

+0

私は今それを解決しました。私が必要としたのは、数値を対応する文字に変換するための何らかの方法(unicodeでなければならない)でした。私が使用したコードは次のとおりです。for(int i = 4608; i <4954; i ++){char val =(char)i; cycle.add(val); letterCount.add(0);}私はforループに入れてそれを反復したいので、何の手紙も必要としませんでした。とにかく、助けてくれてありがとう! :) –

関連する問題