Tarkoituksena on saada poimittua kahden eri tagin välissä oleva teksti.
Dim merkkijono As string = "<tagi>tekstiä...</tagi>" 'tässä haetaan tagien välissä oleva teksti ja tulostetaan haettu teksti
Miten tälläinen toteutetaan vb:ssä, ja miten hausta saa mahdollisimman nopean, jos tiedetään että muuttujassa "merkkijono" ei ole kuin yksi <tagi></tagi> kohta?
Heippa Tumettaja!
esim. seuraavasti...
merkkijono = merkkijono.Replace( _ "<tagi>","").Replace("</tagi>","")
Käsittääkseni tarkoitus oli poimia tagien välissä oleva teksti, ei vain poistaa tageja. Nean esimerkki tuottaisi "Moi<tagi>tekstiä...</tagi>jipii" -> "Moitekstiä...jipii"
Yksi vaihtoehto olisi seuraava
Dim Teksti As String = "Moi<tagi>hoblaa</tagi>Jee" Dim r As New System.Text.RegularExpressions.Regex("<tagi>(.*)</tagi>") If r.IsMatch(Teksti) Then Dim Arvo As String = r.Match(Teksti).Groups(1).Value End If
Heippa taas!
Dim teksti As String = "Moi<tagi>hoblaa</tagi>Jee" MsgBox(teksti.substring(teksti.indexOf(">") + 1, _ teksti.lastindexOf("<")- 1 - teksti.indexOf(">")))
XML luokilla pääset suoraan lukemaan tagien parametrejä ja tagien välistä tekstiä. Luokka on system.xml ja metodi xmlreader.ReadInnerXml.
Laiskuuttani en viitsi koko esimerkkiä kirjoittaa, mutta englantia taitavana pääset hyvin alkuun täältä: http://msdn.microsoft.com/en-us/library/system.xml.xmlreader(VS.80).aspx
Grez kirjoitti:
Dim Teksti As String = "Moi<tagi>hoblaa</tagi>Jee" Dim r As New System.Text.RegularExpressions.Regex("<tagi>(.*)</tagi>") If r.IsMatch(Teksti) Then Dim Arvo As String = r.Match(Teksti).Groups(1).Value End If
Vielä yksi kysymys koskien ylläolevaa koodia: löytääkö tuollainen haku tagien välisen tekstin, jos tagit ovat eri rivillä? Eli tarkoitan siis näin:
<tagi> tekstiä... </tagi>
Aihe on jo aika vanha, joten et voi enää vastata siihen.