2011-01-31 2 views
0

出力としてランダムな文字列を生成する必要があります。 入力はシステムにすでにインストールされている言語名/ロケール名にすることができます。与えられた言語/ロケールのランダムな文字列を生成する方法

すべての提案をいただければ幸いです。おかげさまで input=Locale.ENGLISH出力するための賢明な様="adsaswzxcvnaj"(ランダム)は、任意のロケールのためにできるように

public String getRandomStringOfLocale(Locale locale); 

:コメントから撮影

メソッドのシグネチャは次のようにすることができます。

+2

文字列は実際にはランダムではありませんか?どのように正確にロケールに依存する必要がありますか?あなたは例を挙げることができますか? –

+0

メソッドのシグネチャは次のようになります。 public String getRandomStringOfLocale(Locale locale); input = Locale.ENGLISHの出力は、 "adsaswzxcvnaj"(ランダム) となります。どのロケールでも賢明です。 – SmartSolution

+0

@SmartSolution - まだそれを取得しないでください。むしろ暗号化/復号化やハッシングの問題のように見えます。 **あなたの質問を編集して理由を追加してください**あなたがランダムで**何をしたいのかを考えてみてください(これは本当に*スマートな解決策を見つけるのに役立ちます)) –

答えて

1

私はあなたが後になるかもしれないと思うのは、ある特定のUnicodeコードブロックのランダムな文字を欲しいということです。そうですか? Androidには、APIでコードブロックの定義が公開されているとは思いません。 (Character.UnicodeBlockメソッドが動作するにはいくつかの定義が必要ですが、アクセスできないと思います)

Unicode文字範囲の独自のテーブルを作成し、ロケールが与えられたときに一致させる方法。ただし、多くのロケールは同じUnicodeブロックにマップされます。たとえば、ほとんどのLatin-1言語(英語、スペイン語、フランス語、ドイツ語、...)はBASIC_LATINブロックにマップされます。

スペイン語のロケールにはñを含めることはできますが、英語のロケールでは使用できないランダムな文字列が必要な場合は、非常に困難です。

4

これは奇妙に聞こえるかもしれませんが、あなたの問題を解決することができます。

ランダムな文字列を持つ必要がある言語と文字セットのWikipediaのランダムな記事をグラブします。英数字以外の文字とHTMLタグをすべて削除します。乱数生成器をインスタンス化し、それを使用してテキストを表す文字列から文字を選択します。

String text = WikipediaGrabber.grab(Locale.FRENCH); 
text = removeNonAlphaNumericCharacters(text); 
Random r = new Random(); 
StringBuilder word = new StringBuilder(); 
for (int i = 0; i < NUMBER_OF_CHARACTERS_PER_RANDOM_STRING; i++) 
{ 
    int index = r.nextInt() * text.length(); 
    word.append(text.substring(index, index+1); 
} 
System.out.println("random string in French: " + word.toString()); 
+0

+1、ウィキペディアを使用して、アプリケーションのIO動作をテストするためにロシア語、フランス語、AXIS-OF-EVIL(TM)言語のテキストを取得しました。 – Rudi

関連する問題