Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: [VB2008] merkkijonon poimiminen kahden tagien välistä

Tumettaja [07.03.2009 02:01:20]

#

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?

neau33 [07.03.2009 02:44:45]

#

Heippa Tumettaja!

esim. seuraavasti...

merkkijono = merkkijono.Replace( _
"<tagi>","").Replace("</tagi>","")

Grez [08.03.2009 00:00:40]

#

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

neau33 [08.03.2009 13:29:16]

#

Heippa taas!

Dim teksti As String = "Moi<tagi>hoblaa</tagi>Jee"
MsgBox(teksti.substring(teksti.indexOf(">") + 1, _
teksti.lastindexOf("<")- 1 - teksti.indexOf(">")))

Antti [08.03.2009 21:39:25]

#

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

Tumettaja [15.03.2009 15:03:14]

#

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>

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta