• ベストアンサー

文字列を数列に変換

文字列(アルファベットのみ)を数列に変換するプログラムを作りたいのですが、うまくいきません。 [A = 01、B = 02、~ Z = 26、 Space = 00]とし、例えば入力が「ADAM」であれば、出力は「01040113」となるようなプログラムです。A~Z以外の文字(!, ?, @, 1, 2など)は無視します。 ちなみに言語はJavaです。 誰かご教授いただけないでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.4

しばらくJavaから離れているので、ひょっとしたらどこか間違えてるかもしれませんが、私ならばおおよそ次のような形にすると思います。 //変換用配列作成(インデックスが0~26に割り振られるのがポイント) String[] aArray = {" ","A","B","C","D",・・・,"X","Y","Z"}; //数値を桁あわせした文字列に変換するためのフォーマット作成(ゼロ埋めして2桁の文字列に) DecimalFormat nf = new DecimalFormat("00"); //元になる文字列。(適当) String sourceString = "HOGE" //" "~"Z"まで27回回す。 for(int i = 0; i < aArray.length; i++){ //置換(たとえば、"A"ならば全て"01"に置換します) sourceString = sourceString.replaceAll(aArray[i] , nf.format(i)); } //結果表示 System.out.println(sourceString);

すると、全ての回答が全文表示されます。

その他の回答 (3)

  • m-oosgi
  • ベストアンサー率62% (10/16)
回答No.3

String.format("%0" + format + "d", args) を使ってみてはどうですか? formatは埋め込み後の桁数 argsは入力値です。 この場合、 formatが 2 argsが A (とかBとか~Z)

参考URL:
http://java.sun.com/javase/ja/6/docs/ja/api/java/lang/String.html#format(java.lang.String, java.lang.Object...)
すると、全ての回答が全文表示されます。
  • neko_noko
  • ベストアンサー率45% (146/319)
回答No.2

おそらく、「AB」が「12」か「102」のどちらかになってしまう、ということでしょうか。 違ってたら補足お願いします。 これは、文字をintやlongのような数値型に置き換える限り確実に起こってしまいます。 "01"はあくまで文字であり、数値の1とは違います。数値型の1は1以外に表すことはできません。 "01"のように先頭0詰めをしたければ、"01"という文字として扱わないといけません。 なので、「数値」ではなく「文字」に変換すればよさそうな気がします。 仕様上、これで問題があるなら、それは別途考えないといけませんが。

すると、全ての回答が全文表示されます。
  • gungnir7
  • ベストアンサー率43% (1124/2579)
回答No.1

仕様は分かりました。 それでどこがうまくいかないのですか?

noname#145411
質問者

お礼

文字を変換したときのcharの値が9以下であった場合、先頭に0を付けたいのですが(Aを入力した場合は1ではなく01)、この場合、数列はどうやって表示したらいいでしょうか?というか、この数列は文字列扱いするべきなのでしょうか? ゛.toCharArray()″をつかって、入力した文字列をcharに分割し、そのcharのそれぞれの文字に数字を当てはめて表示する、というようなプログラムを書いたのですが、どうにもしっくりこないので質問した次第です。

すると、全ての回答が全文表示されます。

関連するQ&A