none
Split-Ergebnis in ein Integer-Array ausgeben RRS feed

  • Frage

  • Hallo Leute,

    kann ich ein Split-Ergebnis gleich in ein Integer-Variable ausgeben?

    Beispiel:

    Dim myArray() as Integer
    Dim sArgValue as String = "1;2;3;4"
    
    myArray = sArgValue.Split(New Char() {";"c})

    Bei dieser Vorgehensweise erhalte ich naturgemäß eine Fehlermeldung.

    Gibt es denn noch eine andere Möglichkeit?

    Vielen Dank im voraus.

    Gruß Ahmed

    Dienstag, 8. Januar 2013 16:47

Antworten

  • Hallo Ahmed,

    gibt es (wenn Du die Erweiterungsmethode eben nicht ToInt64List sondern halt AsInteger benennst.)

    Das Framework bietet viel, alles kann und soll es aber nicht anbieten, dafür sind die Anforderungen doch zu individuell.

    Wenn Du die Erweiterungsmethode erstellt hast, kannst Du diese über jeden String aufrufen. Daher verstehe ich nicht, warum Du es schade findest, dass das nicht von Haus aus drin ist. 5 Minuten Arbeit, dass ist es drin (und verwendbar wie etwas, was es von Haus aus gibt)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Ahmed Martens Dienstag, 8. Januar 2013 22:11
    Dienstag, 8. Januar 2013 18:05
    Moderator

Alle Antworten

  • Hallo Ahmed,

    ich hab mir für sowas eine Erweiterungsmethode erstellt.

    <Extension()> _
    Public Function ToInt64List( ByVal Value As String, ByVal Separator As Char ) As List( Of Int64 )
    
    Dim Result As New List( Of Int64 )
    
        If String.IsNullOrEmpty( Value ) Then
            Return Result
        End If
    
    Dim Items  As String()
    
        Try
            Items = Value.Split( New Char() { Separator }, StringSplitOptions.RemoveEmptyEntries )
            Result = Items.ToList().ConvertAll( Function( Check ) Check.ToInt64() )
        Catch ex As Exception
            ' --- Fehler behandeln
            ...
        End Try
        
        Return Result
    
    End Function
    
    <Extension()> _
    Public Function ToInt64( ByVal Value As String ) As Int64
    
    Dim Result As Int64
        Int64.TryParse( Value, Result )
    
        Return Result
    
    End Function
    

    Wenn Du die beiden Methoden eingebunden hast, kannst Du dann bspw. über

    Dim MyInt64List As List( Of Int64 )
        MyInt64List = "1;2;3".ToInt64List( ";"c )
    
    die entsprechende Liste erhalten.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Dienstag, 8. Januar 2013 16:55
    Moderator
  • Hallo,

    du kannst es erstmal nur in ein String-Array bekommen, das du weiter verarbeiten kannst. Um nun Integer-Werte zu bekommen kannst du beispielsweise LINQ benutzen. Alternativ, wenn du nicht mit .NET 4.0 oder höher arbeitest, gehts auch mit einer Schleife:

            Dim s As String = "1;2;3;4"
            Dim a As String() = s.Split(";"c)
    'LINQ
            Dim i1 As Integer() = (From x In a Select Integer.Parse(x)).ToArray()
    'Schleife
            Dim i2 As Integer() = New Integer(a.Length - 1) {}
            For i As Integer = 0 To a.Length - 1
                i2(i) = Integer.Parse(a(i))
            Next

    Wobei LINQ eindeutig schneller und leistungsfähiger in der Verarbeitung ist.


    Koopakiller [kuːpakɪllɐ] | Webseite | Code Beispiele | Facebook | Snippets

    Dienstag, 8. Januar 2013 17:01
    Moderator
  • Vielen Dank für die Beispiele.

    Ich werde mir diese einmal in Ruhe anschauen und in meinem Programm einbinden.

    Auf jeden Fall ist es gut zu wissen (oder auch nicht), dass dies nicht direkt möglich ist.

    An sich schade, dass es nicht so etwas wie,

    s.Split(";"c),AsInteger bzw.

    s.Split(";"c),AsNumeric

    gibt.

    Gruß Ahmed

    Dienstag, 8. Januar 2013 17:50
  • Hallo Ahmed,

    gibt es (wenn Du die Erweiterungsmethode eben nicht ToInt64List sondern halt AsInteger benennst.)

    Das Framework bietet viel, alles kann und soll es aber nicht anbieten, dafür sind die Anforderungen doch zu individuell.

    Wenn Du die Erweiterungsmethode erstellt hast, kannst Du diese über jeden String aufrufen. Daher verstehe ich nicht, warum Du es schade findest, dass das nicht von Haus aus drin ist. 5 Minuten Arbeit, dass ist es drin (und verwendbar wie etwas, was es von Haus aus gibt)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    • Als Antwort markiert Ahmed Martens Dienstag, 8. Januar 2013 22:11
    Dienstag, 8. Januar 2013 18:05
    Moderator
  • Hallo Stefan,

    danke für die Info.

    Ich werde mich dann einmal in die Erweiterungsmethoden einlesen.

    Gruß Ahmed

    Dienstag, 8. Januar 2013 22:14