Der beste Weg, um ein Zeichen in C # zu wiederholen
Was es ist der beste Weg zur Erzeugung einer Zeichenfolge von \t
's in C#
Lerne ich C# und das Experimentieren mit verschiedenen Möglichkeiten, zu sagen, die gleiche Sache.
Tabs(uint t)
ist eine Funktion zurückgibt, die ein string
mit t
Höhe von \t
's
Beispielsweise Tabs(3)
zurück "\t\t\t"
Welche dieser drei Möglichkeiten der Umsetzung Tabs(uint numTabs)
ist am besten?
Natürlich, hängt davon ab, was "beste" bedeutet.
- LINQ-version ist nur zwei Zeilen, das ist schön. Aber die Aufrufe, zu Wiederholen und zu Aggregieren unnötig Zeit/Ressourcen verschlingen?
- Den
StringBuilder
version ist klar, aber ist dieStringBuilder
Klasse irgendwie langsamer? - Den
string
version basic, was bedeutet, es ist leicht zu verstehen. - Spielt es überhaupt keine Rolle? Sind Sie alle gleich?
Alles Fragen, die mir dabei helfen, ein besseres Gefühl für C#.
private string Tabs(uint numTabs)
{
IEnumerable<string> tabs = Enumerable.Repeat("\t", (int) numTabs);
return (numTabs > 0) ? tabs.Aggregate((sum, next) => sum + next) : "";
}
private string Tabs(uint numTabs)
{
StringBuilder sb = new StringBuilder();
for (uint i = 0; i < numTabs; i++)
sb.Append("\t");
return sb.ToString();
}
private string Tabs(uint numTabs)
{
string output = "";
for (uint i = 0; i < numTabs; i++)
{
output += '\t';
}
return output;
}
InformationsquelleAutor der Frage Alex Baranosky | 2009-01-04
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was dazu:
Wo
n
ist die Anzahl der Zeiten, die Sie möchten, wiederholen Sie die Zeichenfolge.Oder besser:
InformationsquelleAutor der Antwort CMS
In allen Versionen .NET, können Sie wiederholt eine Zeichenfolge so:
Wiederholen ein Zeichen
new String('\t', count)
ist Ihre beste Wette. Sehen die Antwort von @CMS.InformationsquelleAutor der Antwort Binoj Antony
Gibt
Und
Gibt
...
Gibt es eine built-in Funktion zu wiederholen, string oder char .net?
InformationsquelleAutor der Antwort Carter Medlin
Die beste version ist sicherlich die Verwendung der builtin Weg:
Anderen Lösungen, bevorzugen die einfachste; nur wenn dies erweist sich als zu langsam, das Streben nach einer effizienteren Lösung.
Wenn Sie eineStringBuilder
und kennen die daraus resultierende Länge im Voraus, dann auch einen entsprechenden Konstruktor, das ist viel effizienter, da es bedeutet, dass nur eine zeitaufwendige Zuweisung erfolgt, und kein unnötiges kopieren von Daten.Blödsinn: natürlich ist der obige code ist effizienter.
InformationsquelleAutor der Antwort Konrad Rudolph
Erweiterungsmethoden:
InformationsquelleAutor der Antwort Rodrick Chapman
Was über die Verwendung von extension-Methode?
Könnte man dann schreiben :
Beachten, dass ein performance-test für die Verwendung der stringbuilder-version für einfache Zeichen anstelle von Zeichenfolgen gibt Ihnen einen großen Aufführung penality :
auf meinem Rechner ist der Unterschied in mesured Leistung 1:20 zwischen:
Debug.WriteLine('-'.Wiederholen(1000000)) //char version und
Debug.WriteLine("-".Wiederholen(1000000)) //string-version
InformationsquelleAutor der Antwort Ronnie
Wie wäre es damit:
InformationsquelleAutor der Antwort Denys Wessels
Ich weiß, dass diese Frage fünf Jahre ist es schon alt, aber es gibt eine einfache Methode, Sie zu wiederholen ein string, der sogar funktioniert .Net 2.0.
Wiederholen Sie die Zeichenfolge:
Gibt
Wiederholen Sie die Zeichenfolge als ein array:
Gibt
Halten Sie es einfach.
InformationsquelleAutor der Antwort ChaimG
Lassen Sie uns sagen, Sie wollen zu wiederholen, '\t' n Anzahl der Zeiten, die Sie verwenden können;
InformationsquelleAutor der Antwort Amin
Mit
String.Concat
undEnumerable.Repeat
die weniger teuer sindals mit
String.Join
InformationsquelleAutor der Antwort bradgonesurfing
Ihre erste Beispiel, das verwendet
Enumerable.Repeat
:umgeschrieben werden kann kompakter mit
String.Concat
:InformationsquelleAutor der Antwort Ray Vega
InformationsquelleAutor der Antwort w.b
Die Antwort hängt wirklich davon ab, die Komplexität, die Sie wollen. Zum Beispiel, ich möchte zu skizzieren, die alle meine Einrückungen mit einem vertikalen Balken, also meinem Einzug string wird wie folgt bestimmt:
InformationsquelleAutor der Antwort Dmitri Nesteruk
Können Sie erstellen, die eine Erweiterung Methode
Dann können Sie es verwenden, wie dies
InformationsquelleAutor der Antwort ivan
Versuchen Sie dies:
InformationsquelleAutor der Antwort Toso Pankovski
Und noch eine andere Methode
InformationsquelleAutor der Antwort Artyom