Rubrik: Variablen/Strings · String-Operationen | VB-Versionen: VB5, VB6 | 08.11.07 |
Strings schnell duplizieren Mit unserer StrDupl-Funktion lässt sich ein vorgebener String schnell duplizieren. | ||
Autor: Dieter Otter | Bewertung: | Views: 9.113 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Hin und wieder muss man einen vorgebenenen String x-mal duplizieren. Für das Duplizieren einzelner Zeichen kann man die VB-Funktion "String$(...)" verwenden. Soll jedoch ein vorgegebener String mehrfach dupliziert werden, muss man sich selbst etwas einfallen lassen. Viele von Ihnen würde das Ganze sicherlich wie folgt lösen (was natürlich auch funktioniert).
Dim sZielString As String Dim i As Long ' String "Test" 10 mal duplizieren For i = 1 To 10 sZielString = sZielString & "Test" Next i
Wie gesagt: Funktionieren tut das natürlich - jedoch lässt die Performance zu Wünschen übrig, wenn man den Quellstring in einer großen Anzahl duplizieren muss.
Verwenden Sie daher besser nachfolgende Funktion, die sich der VB-Funktion "Mid$(...)" mit einem kleinen Trick bedient: zunächst wird der Zielstring auf die ingesamt benötigte Größe gebracht. Anschließend wird der zu duplizierende String einmal an den Anfang des Zielstrings kopiert. Wenn man nun den Zielstring genau einmal auf sich selbst kopiert, vervielfältigt sich dieser von ganz alleine.
' String schnell x-fach duplizieren Public Function StrDupl(ByVal sText As String, ByVal nCount As Long) As String ' String mit benötigter Größe erstellen StrDupl = String$(Len(sText) * nCount, 0) ' jetzt den übergebenen String, der x-mal dupliziert ' werden soll, an die 1. Position des Zielstrings einfügen Mid$(StrDupl, 1) = sText ' Durch diesen Aufruf vervielfältigt sich der String ' ganz von alleine Mid$(StrDupl, Len(sText) + 1) = StrDupl End Function
Anwendungsbeispiel:
Der String "Test" soll 17 mal dupliziert werden.
MsgBox StrDupl("Test", 17)