2010-11-06 13 views
38

Czy istnieje funkcja w języku C#, która zwraca x razy danego char lub ciąg znaków. Czy muszę to zakodować?Czy istnieje wbudowana funkcja powtarzania ciągu znaków lub znaku w .net?

+4

Nie dotyczy to powtarzania * ciągów znaków * zgodnie z żądaniem OP (oprócz powtarzania znaków). Głosowanie w celu ponownego otwarcia. –

+1

nie jest to dokładny duplikat: jest to sposób na zrobienie tego. Dim line As String = New [String] ("-" c, 100) – KevinDeus

+2

Cóż, lepiej późno niż wcale. Głosowałem za ponownym otwarciem, ponieważ jest to ** nie ** duplikat powiązanego możliwego duplikatu. [Najlepszy sposób na powtórzenie znaku w języku C#] (http://stackoverflow.com/questions/411752/best-way-to-repeat-a-character-in-c-sharp) does ** not ** cover repeating string ale tylko postacie! – Nope

Odpowiedz

48
string.Join("", Enumerable.Repeat("ab", 2)); 

Zwraca

"abab" 

I

string.Join("", Enumerable.Repeat('a', 2)) 

Zwraca

"aa" 
+3

nieco więcej poprawnych odpowiedzi poniżej - użyj natywnego "join" dla znaków [(1)] (http://stackoverflow.com/a/19248082/1037948) lub "string.Concat" dla stringów [(2)] (http://stackoverflow.com/a/15390834/1037948) – drzaus

+0

Jeśli kod już używa Linq, użyj 'string.Join (" ", Enumerable.Repeat (" ab ", 2) .ToArray()); ' – Sanjay

+0

Dla nazw znaków jak wspomniano nowy ciąg (char ch, int count) jest lepszy. Poprawą tego może być wykorzystanie Concat. –

49
string.Concat(Enumerable.Repeat("ab", 2)); 

zwraca

„abab”

+4

+1 Bardziej eleganckie rozwiązanie – Keith

+0

Jeśli kod już używa Linq, użyj 'string.Concat (Enumerable.Repeat (" ab ", 2) .ToArray());' – Sanjay

23

Dla ciągów należy rzeczywiście korzystają Kirka rozwiązanie:

string.Join("", Enumerable.Repeat("ab", 2)); 

Jednak dla znaków równie dobrze można użyć wbudowanego (bardziej wydajne) konstruktora ciąg:

new string('a', 2); // returns aa 
+0

Zasługuje 1 punkt za wymienienie właściwego sposobu na powtórzenie postaci. Możesz zobaczyć http://stackoverflow.com/questions/411752/best-way-to-repeat-a-character-in-c-sharp też. Powodzenia. – QMaster

3
new String('*', 5) 

S ee Rosetta Code.

+0

Myślę, że to tylko dla char –

Powiązane problemy