none
String nur Zahlen RRS feed

  • Frage

  • Hallo,

    die Vorgabe ist ein String mit Zahlen und anderen Zeichen.

    Wie kann ich jetzt alle Zeichen und Leerzeichen entfernen die keine Zahl oder das + Zeichen sind?

     

    Gruß

    Frank Bergmann

    Donnerstag, 5. Mai 2011 11:26

Antworten

  • 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

     

     

     

     

    Donnerstag, 5. Mai 2011 19:53
    Beantworter