Avatar billede dingemann Novice
28. april 2012 - 20:03 Der er 2 kommentarer og
1 løsning

VB.NET: returnering af tekst fremsøgt mellem to markører i en string

Jeg oprettede egentlig det her spørgsmål i RegEx-gruppen men efterfølgende slog det mig at der muligvis skal noget kodning til også - og så får jeg muligvis mere ud af at smide spørgsmålet her.
Derfor dobbeltoprettelsen.

Spørgsmålet med enkelte modifikationer er:

Jeg skal bruge en regex og muligvis noget kode der returnerer teksten mellem to markører. Fx i teksten:

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sodales risus a metus aliquet ut ullamcorper metus vehicula. Donec lacus elit, elementum in dignissim vitae, faucibus et purus. Proin et quam in leo tempus dignissim et in turpis. Donec nec sem metus. Sed quis sapien eu nibh vehicula volutpat sed rutrum arcu. Sed pulvinar, enim nec consectetur pellentesque, massa lectus sodales metus, eu blandit lorem dui non tellus. Donec ligula leo, sollicitudin quis aliquet nec, dictum sed purus. Integer dapibus, dolor commodo euismod tristique, odio tellus congue ante, molestie vehicula diam lorem sit amet odio.

... kunne man fx sige at markør A var 'dolor sit' og markør B var 'nec sem'.
Det returnerende tekst/string ville så være:

' amet, consectetur adipiscing elit. Maecenas sodales risus a metus aliquet ut ullamcorper metus vehicula. Donec lacus elit, elementum in dignissim vitae, faucibus et purus. Proin et quam in leo tempus dignissim et in turpis. Donec '

Det er .NET-RegEx og det er muligt der skal noget programmering med ind på banen udover RegEx'en.

Teknisk set så er teksten der søges igennem HTML - men jeg er som sådan ikke så interesseret i HTML'en som begreb i den her sammenhæng - jeg skal bare bruge hele den tekstmængde der er imellem disse to markører.

Vh,
Peter
Avatar billede arne_v Ekspert
28. april 2012 - 20:28 #1
Demo:

Imports System
Imports System.Text.RegularExpressions

Namespace E
    Public Class Program
        Public Shared Function Extract(s As String, startm As String, endm As String) As String
            Return Regex.Match(s, Regex.Escape(startm) & "(.*?)" & Regex.Escape(endm)).Groups(1).Value
        End Function
        Public Shared Sub Main(args As String())
            Dim s As String = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas sodales risus a metus aliquet ut ullamcorper metus vehicula. Donec lacus elit, elementum in dignissim vitae, faucibus et purus. Proin et quam in leo tempus dignissim et in turpis. Donec nec sem metus. Sed quis sapien eu nibh vehicula volutpat sed rutrum arcu. Sed pulvinar, enim nec consectetur pellentesque, massa lectus sodales metus, eu blandit lorem dui non tellus. Donec ligula leo, sollicitudin quis aliquet nec, dictum sed purus. Integer dapibus, dolor commodo euismod tristique, odio tellus congue ante, molestie vehicula diam lorem sit amet odio."
            Dim part As String = Extract(s, "dolor sit", "nec sem")
            Console.WriteLine(part)
            Console.ReadKey()
        End Sub
    End Class
End Namespace
Avatar billede dingemann Novice
29. april 2012 - 16:47 #2
Hej Arne,

Jeg ville ikke vide hvad internettet, support og programmering ville være uden dig!
Jeg takker (igen!).
Du smider et svar hvis du er interesseret i point!

Vh,
Peter
Avatar billede arne_v Ekspert
29. april 2012 - 18:52 #3
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester