Taannoin tuli eteen ongelma, miten saada oheisesta rimssusta haettua nuo lukemat erilleen eri muuttujiin. Kiire kun oli, niin tein homman valmiiksi wanhalla kunnon Instr ja/tai IndexOf systeemillä, mutta tulihan siitä hieman sekavan näköinen...
Mutta mitäpä arvon raati suosittaa paremmaksi ja selkeämmäksi menetelmäksi?
Ja tässä esimerkki lukemista. Lukujen numeroiden määrä vaihtelee, ja ne voivat olla myös negatiivisia.
nro=1 ce=(62.764086, 31.03189) ne=(62.768033, 31.041140) sw=(62.759971, 31.018867) zoom=16
Tutkailin Split-funktiota, ja rivimäärä väheni huomattavasti.
Formille yksi button, ja sille koodi:
.
Dim litania As String = "nro=1 ce=(62.764086, 31.03189) ne=(62.768033, 31.041140) sw=(62.759971, 31.018867) zoom=16"
Dim erottimet() As Char = {" "c, ","c, "="c, "("c, ")"c}
Dim temp() As String
Dim numero, zoom As Integer ' Näissä lopuksi lukemat
Dim celat, celon, nelat, nelon, swlat, swlon As Single ' Näissä lopuksi lukemat
Dim i As Integer
temp = litania.Split(erottimet, StringSplitOptions.RemoveEmptyEntries)
For i = 0 To temp.GetUpperBound(0)
    If temp(i) = "nro" Then
        numero = Val(temp(i + 1))
    End If
    If temp(i) = "zoom" Then
        zoom = Val(temp(i + 1))
    End If
    If temp(i) = "ce" Then
        celat = Val(temp(i + 1))
        celon = Val(temp(i + 2))
    End If
    If temp(i) = "ne" Then
        nelat = Val(temp(i + 1))
        nelon = Val(temp(i + 2))
    End If
    If temp(i) = "sw" Then
        swlat = Val(temp(i + 1))
        swlon = Val(temp(i + 2))
    End If
Next
'... ohjelma jatkuu ...Esimerkiksi säännöllisillä lausekkeilla onnistuu. Jos juuri tämä ei toimi, voit itse korjailla virheet Googlen avulla, hakusana "regex" tai "regular expressions" ja tietenkin "VB.Net".
Imports System.Text.RegularExpressions ' ... Dim MatchObj As Match = Regex.Match(teksti, _ "nro=([0-9]+) " & _ "ce=[(]([0-9]*[.]?[0-9]+), ([0-9]*[.]?[0-9]+)[)] " & _ "ne=[(]([0-9]*[.]?[0-9]+), ([0-9]*[.]?[0-9]+)[)] " & _ "sw=[(]([0-9]*[.]?[0-9]+), ([0-9]*[.]?[0-9]+)[)] " & _ "zoom=([0-9]+)" _ ) numero = Val(MatchObj.Groups(1)) celat = Val(MatchObj.Groups(2)) celon = Val(MatchObj.Groups(3)) ' ...
Aihe on jo aika vanha, joten et voi enää vastata siihen.