Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Konvertera vb6 (regexp) till asp.net

Postades av 2003-11-25 01:29:56 - Pelle Johansson, i forum regular expressions, Tråden har 1 Kommentarer och lästs av 1582 personer

Jag håller på att konvertera en regexp-rutin som Henrik Malmberg skrev till pellesoft tidigare och är skrivet för en vb6-komponent. Nu är objekten ändrade lite i asp.net och regexpmotorn. Därför undrar jag om någon kan konvertera den kod som anges nedan till asp.net?

<code>
Public Function ParseChatMsg(sText)

' används för såväl chatten som forumet
' skriven av Henkoz för pellesoft


Dim oRE, oMatches, oMatch
Dim sMatch, sURLValue, sEmail
Dim sType, nNum

Set oRE = New RegExp
oRE.Global = True
oRE.IgnoreCase = True

'** Leta
oRE.Pattern = "&lt;url:(.*?)&gt;"

'** Kort förklaring till ovanstående RegExp:
'** &lt;url: följt av ngn sorts text och till slut &gt;
'** &lt; = <, &gt; = >

Set oMatches = oRE.Execute(sText)
For Each oMatch In oMatches
sMatch = oMatch.Value
sURLValue = oMatch.SubMatches(0)

' urlnamn som visas
'if len(sURLValue) > 80 then
' a = instr(sURLValue ,"."): b = instr(a, sURLValue ,"/"): if b < a then b = a
' if b > 0 then urlnamn = left(sURLValue , b)
'else
urlnamn = sURLValue
'end if

If InStr(sURLValue, ":") = 0 Then
' sText = Replace(sText, sMatch, "" & sURLValue & "")
sText = Replace(sText, sMatch, "" & urlnamn & "")
Else
If Left(sURLValue, 7) = "mailto:" Then
sEmail = Right(sURLValue, Len(sURLValue) - 7)
sText = Replace(sText, sMatch, "" & sEmail & "")
Else
sText = Replace(sText, sMatch, "" & urlnamn & "")
End If
End If
Next

'** Leta faq, forum, tip å sånt :o)
oRE.Pattern = "!(forum|tip|faq|fil|link|user|artikel|q)([0-9]{1,})"

'** Kort förklaring till ovanstående RegExp:
'** ! följt av forum, tip, faq, fil eller link, följt av MINST en siffra, högsta antal inte satt..

Set oMatches = oRE.Execute(sText)

For Each oMatch In oMatches
sMatch = oMatch.Value
sType = oMatch.SubMatches(0)
nNum = oMatch.SubMatches(1)

'** Här ska alla de olika typerna skiljas åt..
Select Case LCase(sType)
Case "forum"
sText = Replace(sText, sMatch, "Inlägg:" & nNum & "")
Case "tip"
sText = Replace(sText, sMatch, "Tips & Tricks:" & nNum & "")
Case "faq"
sText = Replace(sText, sMatch, "FAQ:" & nNum & "")
Case "fil"
sText = Replace(sText, sMatch, "Filarkivet:" & nNum & "")
Case "link"
sText = Replace(sText, sMatch, "Länk:" & nNum & "")
Case "artikel"
sText = Replace(sText, sMatch, "Artikel:" & nNum & "")
Case "user"
sText = Replace(sText, sMatch, "Medlem:" & nNum & "")
Case "q"
Title = ReadTitle("http://support.microsoft.com/default.aspx?scid=kb;en-us;" & nNum, nNum)
sText = Replace(sText, sMatch, "" & Title & "")
End Select
Next

'** Cleaning up..
Set oMatches = Nothing
Set oRE = Nothing

'** Returnera..
ParseChatMsg = sText
End Function
</code>

Det finns två funktioner här som används och dessa är fixade. De heter ReadTitle samt GetHTML. Dessa kan ni ignorera för dessa är redan löst. Tack på förhand.

Hittade http://aspnet.4guysfromrolla.com/articles/022603-1.aspx som kanske kan vara lösningen på den andra regexp-varianten i koden ovan. Tyvärr är jag aldeles för dålig på regexp för att få till det - och det finns säkert fler av er som kan detta bra mycket bättre.


Svara

Sv: Konvertera vb6 (regexp) till asp.net

Postades av 2003-11-25 21:08:46 - Pelle Johansson

Så här blev lösningen:

<code>
Imports System.Text.RegularExpressions

Shared Function ParseChatMsg(ByVal sText As String) As String

' används för såväl chatten som forumet
' skriven av Henkoz för pellesoft


Dim oMatch
Dim sMatch, sURLValue, sEmail
Dim sType, nNum
Dim urlnamn
Dim title

' deklarationer
Dim m As Match
Dim sStr As String


'** Kort förklaring till ovanstående RegExp:
'** &lt;url: följt av ngn sorts text och till slut &gt;
'** &lt; = <, &gt; = >
'Dim r2 = New Regex("&lt;url:(.*?)&gt;", RegexOptions.IgnoreCase Or RegexOptions.Compiled)
Dim r2 = New Regex("(.*?)", RegexOptions.IgnoreCase Or RegexOptions.Compiled)

m = r2.Match(sText)
While m.Success

sURLValue = m.Groups(1).Value
urlnamn = sURLValue
sStr = m.Groups(1).Index.ToString()

sMatch = "" & sURLValue & ""

If InStr(sURLValue, ":") = 0 Then
sText = Replace(sText, sMatch, "" & urlnamn & "")
Else
If Left(sURLValue, 7) = "mailto:" Then
sEmail = Right(sURLValue, Len(sURLValue) - 7)
sText = Replace(sText, sMatch, "" & sEmail & "")
Else
sText = Replace(sText, sMatch, "" & urlnamn & "")
End If
End If

' loopa nästa förekomst
m = m.NextMatch()

End While

'** Leta faq, forum, tip å sånt
' -----------------------------------------
r2 = New Regex("!(forum|tip|faq|fil|link|user|artikel|q)([0-9]{1,})", RegexOptions.IgnoreCase Or RegexOptions.Compiled)

m = r2.Match(sText)
While m.Success

sType = m.Groups(1).Value
nNum = m.Groups(2).Value

sStr = "!" & sType & nNum ' strängen vi skall ersätta

Select Case LCase(sType)
Case "forum"
sText = Replace(sText, sStr, "Inlägg:" & nNum & "")
Case "tip"
sText = Replace(sText, sStr, "Tips & Tricks:" & nNum & "")
Case "faq"
sText = Replace(sText, sStr, "FAQ:" & nNum & "")
Case "fil"
sText = Replace(sText, sStr, "Filarkivet:" & nNum & "")
Case "link"
sText = Replace(sText, sStr, "Länk:" & nNum & "")
Case "artikel"
sText = Replace(sText, sStr, "Artikel:" & nNum & "")
Case "user"
sText = Replace(sText, sStr, "Medlem:" & nNum & "")
Case "q"
title = ReadTitle("http://support.microsoft.com/default.aspx?scid=kb;en-us;" & nNum, nNum)
sText = Replace(sText, sStr, "" & title & "")
End Select

' m.Groups(1).Value & " at " & m.Groups(1).Index.ToString())
m = m.NextMatch()
End While

r2 = Nothing
m = Nothing

'-- Returnera den nya strängen med ersatta länkar o.dyl
ParseChatMsg = sText

End Function
</code>


Svara

Nyligen

  • 18:37 Remove the bumper in AUDI
  • 15:35 Chicken road crash game
  • 21:41 Automotive Services UK
  • 20:44 Erfarenhet av CBD-olja mot sömnpro
  • 12:13 Sex Dolls for Sale
  • 19:42 Online Casinos for Haitian Players
  • 19:38 Rekommendera något intressant
  • 19:13 Международная перевозка грузов

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 893
27 965
271 778
559
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies