webForumDet fria alternativet

Stränghantering

5 svar · 188 visningar · startad av sharkface

sharkfaceMedlem sedan okt. 200040 inlägg
#1

Hej!

Vill göra följande:

text i databas = "Bla bla bla namn_olle bla bla"

If "namn_" in texten then
gör om namnet som står efter "namn_" till Ucase. Ta tecknen efter "namn_" och kapa när första mellanslaget kommer efter namnet.

Behöver räkna antalet tecken efter "namn_" och köra en mid() så att bara själva namnet blir Ucase. Vill dölja "namn_" för användarna.

Resultatet ska bli följande när det hämtas ut ur databasen:

"Bla bla bla OLLE bla bla"

Jag suger på stränghantering, hoppas någon förstår vad jag vill göra och kan hjälpa mig...

------------------
sharkface

LarsGMedlem sedan dec. 200012 464 inlägg
#2
Dim position,txt,txt_length,name_length
txt = "den text du har"
position = instr(txt,"namn_")
if position > 0 then
   txt_length = len(txt)
   name_length = instr(mid(txt,position)," ")
   if name_length = 0 then
      name_length = txt_length - position + 1
   end if
   txt = left(txt,position-1) & _
   Ucase(mid(txt,position+5,name_length-5)) & _
   right(txt,txt_length-(position+name_length)+1)
end if

------------------
essentitia preter non sans multiplicandum

icaaqMedlem sedan okt. 20005 273 inlägg
#3
strText = "Bla bla bla haha namn_olle bla bla"
If InStr(strText, "namn_") > 0 Then
intFirstPos = Instr(strText, "namn_")
intLastPos = Instr(intFirstPos, strText, " ")
strNamn = UCASE(Mid(strText, intFirstPos + 5, intLastPos - intFirstPos - 5))
strtexten = Left(strText, intFirstPos - 1)
strTexten = strTexten + strNamn
strTexten = strTexten + Mid(strText, intLastPos)
End If

Men hur det går om Olee kommer två ggr vet jag inte....då är nog Regular.exp bättre ;)

------------------
[Har aldrig redigerats av någon den 11 okt 2001]

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Regexp variant som tar hand om flera förekomster av namn_xxxx

t = "din sträng med namn_olle eller namn_kurt"
set o = new regexp
o.global = true
o.pattern = "(namn_[A-Za-z]+)"
Set Matches = o.Execute(t)
for i = 0 to matches.count-1
 name = matches.item(i).value
 t = replace(t,name,ucase(mid(name,6)))
next

------------------
essentitia preter non sans multiplicandum

sharkfaceMedlem sedan okt. 200040 inlägg
#5

Den sista varianten ser väldigt bra ut. Det jag nu oroar mig för är:

o.pattern = "(namn_[A-Za-z]+)"

innebär detta att speciella tecken som tex "@" och "." inte kan ingå i strängen? (vilka tecken ingår i A-Z)?

Jag ska nämligen även leta efter "epost_" i strängen på samma sätt som jag söker efter "namn_".

Är tillägg av denna typ möjligt?

o.pattern = "(namn_[A-Za-z]+[@]+[.])"

------------------
sharkface

LarsGMedlem sedan dec. 200012 464 inlägg
#6

[A-Za-z] matchar bara engelska bokstäver så @ och . kommner inte med.

I så fall kan du testa med

o.pattern = "(epost_[A-Za-z@\.]+)"

+ betyder en eller flera förekomster.

------------------
essentitia preter non sans multiplicandum

128 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)