2

お待ちいただきありがとうございます。これは私の問題です。私は、さまざまな文字の大きなセットで最適に動作するプログラムを Java で書いています。すべての文字を文字列に格納する必要があります。private static final String values = "0123456789"; から始めました。次に、AZ、az、およびすべてのコモンズ記号を追加しました。しかし、まだ数が少なすぎるので、Unicode が解決策になるのではないかと考えました。

問題は次のとおりです。Eclipse で表示できるすべての Unicode 文字を取得する最良の方法は何ですか (認識されない文字 (小さな長方形のように表示される文字) がある場合、私のアルゴリズムはおそらく失敗します)。ここ (en.wikipedia.org/wiki/List_of_Unicode_characters) に存在するすべての文字が正しく表示された文字列 (またはいくつかの文字列) を作成することは可能ですか?

http://www.terena.org/activities/multiling/euroml/tests/test-ucspages1ucs.htmlまたはhttp://zenoplex.jp/tools/unicoderange_generator.htmlから大まかなコピペができますが、よりクリーンなソリューションに感謝します。フォント (Unifont) から文字を抽出する方法があるかどうかはわかりません。または、この (www.utf8-chartable.de/unicode-utf8-table.pl) Web ページを解析する必要があります。

さらに、すべての文字を String に追加すると、おそらく次のエラーが表示されます。 10798769/how-to-process-a-string-with-823237-characters)。

ハイブリッド ソリューションを受け入れることができます。SO question/4989091/removing-duplicates-from-a-string-in-Java でこの質問に従って重複を削除できます)

最後に、最長の異なる文字のみの文字列を取得するすべてのソリューションが受け入れられます。ありがとう!

4

2 に答える 2

0

Apacheクラスを使用するだけで、org.apache.commons.lang.RandomStringUtils(commons-lang)が目的を解決できます。

http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/RandomStringUtils.html

また、API の使用方法については、以下のコードを参照してください。

    import org.apache.commons.lang3.RandomStringUtils;

public class RandomString {

    public static void main(String[] args) {


        // Random string only with numbers

  String string = RandomStringUtils.random(64, false, true);

  System.out.println("Random 0 = " + string);


  // Random alphabetic string

  string = RandomStringUtils.randomAlphabetic(64);

  System.out.println("Random 1 = " + string);


  // Random ASCII string

  string = RandomStringUtils.randomAscii(32);

  System.out.println("Random 2 = " + string);


  // Create a random string with indexes from the given array of chars  

  string = RandomStringUtils.random(32, 0, 20, true, true, "bj81G5RDED3DC6142kasok".toCharArray());

  System.out.println("Random 3 = " + string);
    }
}
于 2013-10-18T16:12:54.690 に答える