vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Variablen/Strings   |   VB-Versionen: VB2010 - VB201505.10.20
Eine Extension für String-Bearbeitung: String/Char an n-ter Position ändern

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:   Dietrich HerrmannBewertung:  Views:  198 
ohne HomepageSystem:  Vista, Win7, Win8, Win10kein 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.



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2020 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.