Hallo Frank,
Deine Angaben lassen noch einige Fragen offen.
Am vom Prinzip tuts eine einfache Schleife und ein StringBuilder.
Unten mal zwei Varianten, wobei die ausgeblendete stur alle Zeichen überträgt,
die zweite (aktive) das erste Pluszeichen bereücksichtigt und nach vorne setzt.
Private Sub OnlyDigitAndPlusTest()
Dim values As String() = {"123456+", "a123+456", "abc", "++123+a+b456+"}
For Each value In values
Console.WriteLine("'{0}' => '{1}'", value, OnlyDigitAndPlus(value))
Next
End Sub
Public Shared Function OnlyDigitAndPlus(value As String) As String
If String.IsNullOrWhiteSpace(value) Then
Return ""
End If
Dim result As New StringBuilder()
For Each ch In value
#If False Then
' Einfache Variante (ohne Berücksichtigung der Position)
If Char.IsNumber(ch) OrElse ch = "+"c Then
result.Append(ch)
End If
#Else
' Erstes Pluszeichen nach vorne
If Char.IsDigit(ch) Then
result.Append(ch)
ElseIf ch = "+" Then
If result.Length = 0 OrElse result(0) <> "+" Then
result.Insert(0, ch)
End If
End If
#End If
Next
Return result.ToString()
End Function
Brauchst Du noch was anderes, bleibt das Prinzip das gleiche.
Andere Varianten wie RegEx oder Linq lasse ich mal aussen vor,
damit ginge es oftmals ebenso.
Gruß Elmar