- PR -

n文字のcで初期化

投稿者投稿内容
やじゅう
常連さん
会議室デビュー日: 2005/08/10
投稿数: 34
お住まい・勤務地: 野獣の住処
投稿日時: 2007-02-19 16:40
C++のSTLのstringには、n文字のcで初期化することができるコンストラクタがあります。

string s = string(5, 'A'); //文字列"AAAAA"を生成

java.lang.String(および他のString*なクラス)に同様のコンストラクタ or メソッドを見つけられなかったのですが、実現するにはどんなクラスを用いればよいでしょうか。
すみょし
常連さん
会議室デビュー日: 2007/01/25
投稿数: 36
投稿日時: 2007-02-19 16:57
こんにちわ。

自力で実装するか、
commonsのコレ使うとかですかね。
http://www.jajakarta.org/commons/lang-2.0/ja/withPrimary/org/apache/commons/lang/StringUtils.html
やじゅう
常連さん
会議室デビュー日: 2005/08/10
投稿数: 34
お住まい・勤務地: 野獣の住処
投稿日時: 2007-02-19 17:33
ありがとうございます。

これ位はJavaの標準パッケージにあるだろうと思っていましたが、ハズレでしたか。
ご教示頂いたJakartaのライブラリを用いることで、解決できました。
nekoyama
ベテラン
会議室デビュー日: 2005/03/12
投稿数: 71
投稿日時: 2007-02-19 17:34
java.util.Arrays#fill()系メソッドではどうでしょうか?
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2007-02-19 17:36
java.util.Arrays.fill(char[], char)でchar[]に該当文字を埋めてString(char[])でnewとかですかね。
やじゅう
常連さん
会議室デビュー日: 2005/08/10
投稿数: 34
お住まい・勤務地: 野獣の住処
投稿日時: 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/01/25
投稿数: 36
投稿日時: 2007-02-19 19:29
既に与えられている文字列に後方連結をしたいのなら
rightPadメソッドのほうが良いと思います。
前方連結もleftPadで出来ますので、固定長のファイル扱うよーなやつなら、こっちが良いかな、と。

空文字列を埋めるだけならば、やじゅうさんの方法で良いかと思います。


[ メッセージ編集済み 編集者: すみょし 編集日時 2007-02-19 19:30 ]
sawat
大ベテラン
会議室デビュー日: 2006/08/02
投稿数: 112
投稿日時: 2007-02-20 09:25
引用:

やじゅうさんの書き込み (2007-02-19 19:24) より:
Arraysを用いると付加は出来ますが、切り詰めはどのようにすれば良いでしょうか。



切り詰めは、普通String#substringを使います。

また、Javaで文字列の編集を行う場合はStringBuilderを使うのが基本になります。
commonsのStringUtilsも便利ですが、こちらも抑えておいてください。

# StringUtilsも内部ではStringBuilder/StringBufferを使っているはずです

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