2016-09-07 6 views
1

を使用して文字列を繰り返し、私は.- 40回繰り返し、これが動作しないのはなぜStringBuilderはStringBuilderの

を使用してstringに保存したいですか?

string result = new StringBuilder("").Append(".-",0,40).ToString(); 

私は約otherソリューションを知っているが、私はこの方法であなたはそれがないと思う何をしませんStringBuilder

+0

ループを使用して同じ定数の40倍を追加 – Steve

+2

これは、「追加」の仕組みではありません。その文字列を繰り返さないように部分文字列を追加するように指示しています。具体的には、最後の引数は実際には部分文字列の長さです。彼らはちょうど 'カウント 'の不幸な名前を与えました。 – juharr

答えて

6

を使用します。 2つのintパラメーターは、追加するサブストリングの開始インデックスと長さを指定します。

StringBuilderは何をしたいのための方法を持っている:それはInsertと呼ばれています:

sb.Insert(0, ".-", 40); 
+0

はい、長さです。このようなメソッドは混乱します。いくつかのメソッドでは、2番目のintは終了インデックスを意味し、他のメソッドでは長さを意味します。編集されました。 –

+0

ほとんどのC#ライブラリは、Javaが開始と終了を行うときにstartとlengthを使用します。この場合、最後の引数に 'count'という名前が付けられているため、さらに悪化します。 – juharr

+0

@juharr Parallel.ForEachは、例えばstartとendを使います...私はそれを好むと思います。 「20から50までのすべての数字」は「20から始まる30の数字」よりもわかりやすいです。 –

1
StringBuilder sb = new StringBuilder(); 
for (int i = 0; i < 40; i++) 
{ 
    sb.Append(".-"); 
} 
MessageBox.Show(sb.ToString()); 
+1

ダンプコードはOPや将来の読者にはあまり役に立ちませんが、空の文字列でStringBuilderを初期化しない理由、Append()のソリューションが間違っている理由、そしてなぜ初期容量を80に設定したいのかInsert()との違いは... –

0

あなたは何回かは、あなたのオプションは、文字列の繰り返したい場合は、次のループを使用して

1-(指摘通りを単一文字の場合

2-)@ Balagurunathanの答えによって、あなたは使用することができます。

string result = new string('a', 10); //aaaaaaaaaa 
私はしかし、 ためのループに固執するだろう

string result = new StringBuilder().Append(string.Join("", Enumerable.Repeat(".-", 40))).ToString(); 

:だから私はあなたがやろうとしていたものと考えてい

string result = string.Join("", Enumerable.Repeat(".-", 5)) //.-.-.-.-.- 

たこれらの線に沿って何かを:複数の文字の文字列に対して3210

パフォーマンスの面では