2011-12-16 28 views
1

私はエンドツーエンドベースのテストで使用するために別のjsonファイルを生成する必要があるプロジェクトに取り組んでいます。Javaはアラビア語のランダムな文字列を生成します

システムの国際化、つまり異なる文字タイプを処理できることが条件の1つです。次のステップでは、国際化をカバーするものである、と私はそれが必要しかし

return RandomStringUtils.random(characterAmount, true, false); 

:私は、単純なランダムな文字列を開発するために管理してきました

は、私はそれを必要とするこれまでのときに別のラテン文字を生成する方法の中に座っていましたアラビア文字の場合にランダムな文字列を生成します。

誰もがこれについて最善の方法についてのヒントを持っていますか?

答えて

6

簡単に言えば、ランダムなアラビア文字を選択するだけです(その場所のUnicodeチャートを確認してください)。http://unicode.org/charts/PDF/U0600.pdfとしたい文字を選択してください。

残念ながら、それは違法なアラビア語の文字列を作成します。単語の先頭に表示される文字はどこでもかまいませんし、末尾の文字も同じで、浮動するハムザをどこで取得するかはわかりません。文字列がより「アラビア準拠」になる必要がある場合、私は別の何かをするでしょう:

大きなアラビア語ファイルを単語に分割してランダムに選択します。何もそのためにコーランを打つ:あなたがテストするためにjava.lang.Character.UnicodeBlocklink to javadoc) を使用しての可能性を持っているhttp://www.sacred-texts.com/isl/uq/index.htm

0

Unicode文字が特定のブロックに属している場合

アルゴリズムの複雑さはひどいですが、良い結果につながるはず。あなたも、あなたが簡単に

それを再利用できるようにそれとも、コードポイントを取得するためにアラビア語source of that classをチェックすることができ、ファイルの下で、あなたの結果をキャッシュすることができます実際にアルゴリズムの複雑さは、おそらく `O(1)`です:-)

+0

の範囲です。 ..-) –

+0

@Stephenはい、あなたはクラスメソッドの複雑さについて話をしています...しかし、私は彼がランダムなコードポイントを生成するために書かなければならなかった方法を念頭に置いていました。正確な範囲を見つけてすべてのUnicodeBlockインスタンスのすべてを再実行して、UnicodeBlockのすべての範囲のリストを取得します。かなりO(1)ではないことを確かめる: - D – Grooveek

関連する問題