Rubrik: Variablen/Strings | VB-Versionen: VB2010 - VB2015 | 05.10.20 |
![]() Diese Funktion dient dem Ändern eines Strings derart, dass ein enthaltener String/oder Zeichen nur an einer bestimmten Position n im String geändert wird. | ||
Autor: ![]() | Bewertung: ![]() ![]() ![]() ![]() ![]() | Views: 2.456 |
ohne Homepage | System: Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Diese Funktion dient dem Ändern eines Strings derart, dass ein enthaltener String/oder enthaltenes Zeichen nur an einer bestimmten Position n im String geändert wird.
Wenn ein String eine bestimmte Zeichenfolge einmal oder mehrfach enthält, kann man mit dieser Extension das n-te Auftreten des gesuchten Strings mit einem neuen String ändern.
Kurz gesagt: tritt im String das Leerzeichen (Space) bspw. 5 mal auf, und man möchte nur das dritte Leerzeichen ändern, bspw. in Komma/Space, dann kann man das mit dieser Extension realisieren.
Hier die Funktion
(in einem Modul zu speichern, Imports System.Runtime.CompilerServices ist notwendig):
''' <summary> ''' im String die n-te Position eines Strings durch anderen String ersetzen ''' </summary> ''' <param name="original">der Original-String</param> ''' <param name="oldValue">der zu ändernde Teil-String</param> ''' <param name="newValue">der einzufügende Teil-String</param> ''' <param name="n">die n-te Position des zu ändernden Teil-Strings ''' im Original-String</param> ''' <returns>den geänderten String</returns> <Extension()> Function ReplaceNrOcurrance(original As String, oldValue As String, newValue As String, Optional n As Short = 1) As String Dim i, l As Integer Dim newString, sp() As String If String.IsNullOrEmpty(original) _ OrElse String.IsNullOrEmpty(oldValue) _ OrElse String.IsNullOrEmpty(newValue) _ OrElse Not original.Contains(oldValue) Then Return original sp = Split(original, oldValue) 'splitten des zu ändernden Strings l = sp.Length - 1 For i = 0 To l newString += sp(i) If i = n - 1 Then newString += newValue ElseIf i < l Then newString += oldValue End If Next Return newString 'Rückgabe des geänderten Strings End Function
Anmerkung:
Wer als zu ersetzenden Text auch "" (EmptyString) verwenden möchte, muss in der Funktion die Zeile:
OrElse String.IsNullOrEmpty(newValue) _
streichen.