いろいろなプログラミング言語で、

文字列(文字)を繰り返す方法を教えてほしいです。

(例)
・Ruby: "hoge" * 3
・Perl: "hoge" x 3
・VB: String$(3, "a") ※文字列を繰り返す方法はなし

「ない」ことも知りたいので、簡単な方法がなければ
それを教えてもらえるだけでもうれしいです。
また、「演算子や関数はないけど、こう書けば簡単にできる」とかも
教えてもらえるともっとうれしいです。

何の言語でもいいのですが、特に知りたい言語は
C, C++, C#、Java, Python, PHP, JavaScript, Haskel, Lisp..
などです。マニアックな言語も大歓迎です。

よろしくお願いします。

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2007/11/17 11:16:02

回答13件)

id:higeorange No.1

回答回数14ベストアンサー獲得回数1

ポイント15pt

http://q.hatena.ne.jp/1195018503

JavaScript で。

Ruby などのように組込みメソッドはないけど。


String.prototype.repeat = function(n) {

return Array(n+1).join(this);

}

"Hoge".repeat(3) => HogeHogeHoge

id:GoldenDawn No.2

回答回数426ベストアンサー獲得回数81

ポイント15pt

PHP

str_repeat("hoge", 3)
id:y-kawaz No.3

回答回数1422ベストアンサー獲得回数226

ポイント15pt

Java の commons-lang で

StringUtils.repeat("hoge", 3)

StringUtils.html#repeat

id:MasaMura No.4

回答回数8ベストアンサー獲得回数0

ポイント15pt

ちょうどJAVAを勉強中なのでベタベタですが・・・・

String string ="";

for (int i = 0; i < 3; i++) {

    string = string.concat("hoge");

}

id:Bookmarker No.5

回答回数191ベストアンサー獲得回数34

ポイント15pt

C/C++ には、標準では無いと思います。

(C++ には、文字列ではなく文字を繰り返すメンバ関数ならありますが。)


C++ の場合、Boost ライブラリーを使うと下記のように簡単に書けます。

#include <boost/preprocessor/repetition/repeat.hpp>
#include <iostream>

#define STR_REPEAT_MACRO(z, n, s) s
#define STR_REPEAT(s, n) BOOST_PP_REPEAT(n, STR_REPEAT_MACRO, s)

int main()
{
    std::cout << STR_REPEAT("hoge", 3) << "\n";
}

ただし、上記はリテラル限定です。

id:kitaakabane No.6

回答回数82ベストアンサー獲得回数2

ポイント15pt

マイナーな部類に入りますが、HSPだとこうなります。

*MOJI

mes "words"

wait 1

goto *MOJl

id:thrillseeker No.7

回答回数328ベストアンサー獲得回数37

ポイント15pt

C# で:

string hoge3 = new String(' ', 3).Replace(" ", "hoge");

ちょっとトリッキーですが。

id:lunlumo No.8

回答回数107ベストアンサー獲得回数14

ポイント15pt

 Haskellには特に専用の処理は無いと思いますが,以下の様な処理で簡潔に記述できます。

concat $ replicate 3 "hoge"
id:likk No.9

回答回数8ベストアンサー獲得回数0

ポイント15pt

マイナーどころで、ColdFusion

#RepeatString("hoge", 3)#

id:samejima No.10

回答回数92ベストアンサー獲得回数8

ポイント15pt

Python

"hoge" * 3
id:paraizo No.11

回答回数139ベストアンサー獲得回数10

ポイント15pt

Python

str = "hoge" * 3

id:sumim No.12

回答回数3ベストアンサー獲得回数0

ポイント15pt

Smalltalk

String new: 3 withAll: $a ※文字列を繰り返す方法はなし

文字列を繰り返すには、

(1 to: 3) inject: '' into: [:str :idx | str, 'hoge']

とか

String streamContents: [:ss | 3 timesRepeat: [ss nextPutAll: 'hoge']]

とか(後者は Squeak Smalltalk のみ)。

id:Beirii No.13

回答回数173ベストアンサー獲得回数18

ポイント15pt

つ LabVIEW


http://f.hatena.ne.jp/images/fotolife/B/Beirii/20071116/20071116102435.gif

※ 実際には配列初期化関数を使用せずにForループを使用したほうがいいらしいけど。

  • id:kanouk
    回答ありがとうございました。
    ずいぶん集まってとても満足です。

    まとめてお礼申し上げます。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません