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

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

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

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

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

よろしくお願いします。

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

回答(13件)

id:higeorange No.1

higeorange回答回数14ベストアンサー獲得回数12007/11/14 14:49:13

ポイント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

GoldenDawn回答回数426ベストアンサー獲得回数812007/11/14 14:52:10

ポイント15pt

PHP

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

y-kawaz回答回数1420ベストアンサー獲得回数2252007/11/14 16:10:22

ポイント15pt

Java の commons-lang で

StringUtils.repeat("hoge", 3)

StringUtils.html#repeat

id:MasaMura No.4

MasaMura回答回数8ベストアンサー獲得回数02007/11/14 16:14:40

ポイント15pt

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

String string ="";

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

    string = string.concat("hoge");

}

id:Bookmarker No.5

しおり回答回数191ベストアンサー獲得回数342007/11/14 18:09:55

ポイント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

Weak-field回答回数82ベストアンサー獲得回数22007/11/14 18:43:23

ポイント15pt

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

*MOJI

mes "words"

wait 1

goto *MOJl

id:thrillseeker No.7

thrillseeker回答回数328ベストアンサー獲得回数372007/11/14 22:28:20

ポイント15pt

C# で:

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

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

id:lunlumo No.8

lunlumo回答回数107ベストアンサー獲得回数142007/11/15 01:06:37

ポイント15pt

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

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

Likkradyus回答回数8ベストアンサー獲得回数02007/11/15 10:13:11

ポイント15pt

マイナーどころで、ColdFusion

#RepeatString("hoge", 3)#

id:samejima No.10

samejima回答回数92ベストアンサー獲得回数82007/11/15 19:35:23

ポイント15pt

Python

"hoge" * 3
id:paraizo No.11

paraizo回答回数139ベストアンサー獲得回数102007/11/15 21:48:29

ポイント15pt

Python

str = "hoge" * 3

id:sumim No.12

sumim回答回数3ベストアンサー獲得回数02007/11/16 02:12:05

ポイント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

Beirii回答回数173ベストアンサー獲得回数182007/11/16 10:29:27

ポイント15pt

つ LabVIEW


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

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

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

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

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

トラックバック

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません