- - PR -
n文字のcで初期化
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-02-19 16:40
C++のSTLのstringには、n文字のcで初期化することができるコンストラクタがあります。
string s = string(5, 'A'); //文字列"AAAAA"を生成 java.lang.String(および他のString*なクラス)に同様のコンストラクタ or メソッドを見つけられなかったのですが、実現するにはどんなクラスを用いればよいでしょうか。 | ||||
|
投稿日時: 2007-02-19 16:57
こんにちわ。
自力で実装するか、 commonsのコレ使うとかですかね。 http://www.jajakarta.org/commons/lang-2.0/ja/withPrimary/org/apache/commons/lang/StringUtils.html | ||||
|
投稿日時: 2007-02-19 17:33
ありがとうございます。
これ位はJavaの標準パッケージにあるだろうと思っていましたが、ハズレでしたか。 ご教示頂いたJakartaのライブラリを用いることで、解決できました。 | ||||
|
投稿日時: 2007-02-19 17:34
java.util.Arrays#fill()系メソッドではどうでしょうか?
| ||||
|
投稿日時: 2007-02-19 17:36
java.util.Arrays.fill(char[], char)でchar[]に該当文字を埋めてString(char[])でnewとかですかね。
| ||||
|
投稿日時: 2007-02-19 19:24
皆さんありがとうございます。
与えられた文字列を固定長LENにする、ということをしたいのです。 文字列が短ければ空白を付加し、長ければ超過部分を切り詰めます。 StringUtilsを用いると、次で出来ます。 String s; s += StringUtils.repeat(" ", LEN - s.length); //付加 s = StringUtils.left(s, LEN); //切り詰め Arraysを用いると付加は出来ますが、切り詰めはどのようにすれば良いでしょうか。 String s; if(s.length < LEN){ s += Arrays.fill(new char[LEN - s.length], ' '); //付加 }else{ //切り詰め } #簡潔に書けるのでStringUtilsで済ませるつもりですが、探求心が… | ||||
|
投稿日時: 2007-02-19 19:29
既に与えられている文字列に後方連結をしたいのなら
rightPadメソッドのほうが良いと思います。 前方連結もleftPadで出来ますので、固定長のファイル扱うよーなやつなら、こっちが良いかな、と。 空文字列を埋めるだけならば、やじゅうさんの方法で良いかと思います。 [ メッセージ編集済み 編集者: すみょし 編集日時 2007-02-19 19:30 ] | ||||
|
投稿日時: 2007-02-20 09:25
切り詰めは、普通String#substringを使います。 また、Javaで文字列の編集を行う場合はStringBuilderを使うのが基本になります。 commonsのStringUtilsも便利ですが、こちらも抑えておいてください。 # StringUtilsも内部ではStringBuilder/StringBufferを使っているはずです |