webForumDet fria alternativet

Ta bort parentes + innehåll?

ASP

8 svar · 366 visningar · startad av UrMe

Medlem sedan apr. 2001762 inlägg
Frågan#1

Om jag har en sträng som kanske ser ut så här:

(10)Stockholm

Hur tar jag bort (10) i den strängen innan den skrivs ut?

Har provat detta:

t = "(10)Stockholm"
dim re
set re = new regexp
re.pattern = "(()(?:(?:.|\n|\r)*?)())"
nystrang = re.replace(t, "$1$2")
set re = nothing

Men jag är inte så bra på RegExp, så det där gör ingenting tydligen.

Medlem sedan okt. 2004392 inlägg
#2

Testa denna

Function fixaStr(Str)
  Set objRegExp = New regexp
  objRegExp.Global = true
  objRegExp.IgnoreCase = true
  objRegExp.Pattern = "\(.*\)(.*)"
  Set Matches = objRegExp.Execute(Str)
  fixaStr = Matches(0).Submatches(0) & "<br>"
End Function

Kan bara köra en "(10)Stockholm" i taget.

Medlem sedan apr. 2001762 inlägg
#3

Ja det där fungerar, men det är inte alltid en parentes finns i strängen.. om jag tar bort parentesen nu så får jag felmeddelande, går det att fixa?

Medlem sedan okt. 2004392 inlägg
#4

Så, nu kör den bara ifall första tecknet är "(".

Function fixaStr(Str)
  If Left(Str,1) = "(" Then
    Set objRegExp = New regexp
    objRegExp.Global = true
    objRegExp.IgnoreCase = true
    objRegExp.Pattern = "\(.*\)(.*)"
    Set Matches = objRegExp.Execute(Str)
    fixaStr = Matches(0).Submatches(0) & "<br>"
  Else
    fixaStr = Str
  End If
End Function
Medlem sedan apr. 2001762 inlägg
#5

Tack så mycket!

Men är det helt omöjligt att göra en funktion som kollar hela strängen och tar bort "(+innehåll+)" även fast strängen ser ut så här "Stockholm(14)"?

Den som du gav nu fungerar just nu :) Men kan vara bra att veta i framtiden.

Medlem sedan apr. 20031 660 inlägg
#6

HEJ!

Om du ändrar If Left(Str,1) = "(" till If InStr(Str,"(")) > 0 då körs koden oavsett var parantesen finns.

Borde detta inte kunna fixas i mönstret?
Fast, det är väl inte mönstret som är fel, det är väl referensen till något som inte finns?

For Each Match in Matches
     fixaStr = Matches(0).Submatches(0) & "<br>"
Next

Eller?

Dock, för att vara säker på att din funktion fungerar, måste du veta vad som ska tas bort, dvs vilken data du får.
Står det Stockholm[3] eller /33/Stockholm kommer det inte att fungera.

Medlem sedan apr. 2001762 inlägg
#7

Jag har stött på ett litet problem, om strängen innehåller ett "enter" slag.. dvs radbryt så skriver den bara ut första raden.

Om jag skriver in:

(1)Test test test
asdasdsd

I ett formulär och sparar det i access och skriver ut det med den där funktionen så kommer bara "Test test test" att synas.. någon som har en lösning på det?

Medlem sedan dec. 20025 483 inlägg
#8
objRegExp.Pattern = "\(.*\)((?:.|\r|\n)*)"
Medlem sedan apr. 2001762 inlägg
#9

Peter S skrev:

objRegExp.Pattern = "\(.*\)((?:.|\r|\n)*)"

Tack så mycket!

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)