- PR -

ランダムな文字列生成

1
投稿者投稿内容
sinh
ベテラン
会議室デビュー日: 2003/01/22
投稿数: 87
投稿日時: 2007-02-23 22:09
現在、Javaで色々なパターン(数値、アルファベット、ひらがな、カタカナ)
のランダム文字列生成処理を作成したいと思っています。

数値とアルファベットについては、
commons-langのRandomStringUtilsクラスで大丈夫と思ったのですが、
ひらがな、カタカナ、漢字などでランダム文字列を生成する方法
または、ライブラリなどありますでしょうか?

よろしくお願いします。
マリン
常連さん
会議室デビュー日: 2006/05/28
投稿数: 41
投稿日時: 2007-02-24 01:04
引用:

sinhさんの書き込み (2007-02-23 22:09) より:

数値とアルファベットについては、
commons-langのRandomStringUtilsクラスで大丈夫と思ったのですが、
ひらがな、カタカナ、漢字などでランダム文字列を生成する方法
または、ライブラリなどありますでしょうか?



以前、他言語で上記のような機能を提供する自作関数を作ったことがあります。そのときはWindows開発だったため、文字コードがShift_JISという前提条件付きになりますが、以下のような文字コード体系になっていることからその中のランダムな文字コードを選択する処理にしました。

  • 全角数字(0〜9)は文字コード0x824F〜0x8258
  • 全角英大文字(A〜Z)は文字コード0x8260〜0x8279
  • 全角英小文字(a〜z)は文字コード0x8281〜0x829A
  • 全角ひらがな(ぁ〜ん)は文字コード0x829F〜0x82F1
  • 全角カナ(ァ〜ヴ、小さいヵとヶは除く)は文字コード0x8340〜0x8394、ただし下位バイトが0x7Fは未定義なので除外(0x837Fのみ)
  • 第一水準漢字(亜〜腕)は文字コード0x889F〜0x9872、ただし下位バイトが0x7Fまたは0x40〜0xFCは未定義なので除外
  • 第二水準漢字(弌〜滌、漾〜熙)は文字コード0x989F〜0x9FFCと0xE040〜0xEAA4、ただし下位バイトが0x7Fまたは0x40〜0xFCは未定義なので除外


IMEの文字パレットなどを眺めてみれば上記範囲がよくわかるのではないかと思います。
あしゅ
ぬし
会議室デビュー日: 2005/08/05
投稿数: 613
投稿日時: 2007-02-24 01:29
1. charの範囲(16bit)の乱数を生成する
2. java.lang.CharacterのisLetter()やisDigit()で判定する
 ⇒ 違うなら記号や制御コード等なので1に戻る
3. Shift_JISやEUC-JP等に変換できるか試してみる
 ⇒ 変換できなければ他言語なので1に戻る

って流れを繰り返せばいいのでは?

中国語や韓国語の漢字が混じってもよいなら
Character.UnicodeBlockを使ってもできるかも。

#やっぱりCJK Unificationって感じ悪いよなぁ・・・。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-02-24 15:51
引用:

あしゅさんの書き込み (2007-02-24 01:29) より:
#やっぱりCJK Unificationって感じ悪いよなぁ・・・。



今になって分離しようとしていたりしますし。
漢字のシソーラスは常に難しい問題を孕んでいますね…
1

スキルアップ/キャリアアップ(JOB@IT)