Jag har strängen enl nedan: ...en snabbt hopslarvad funktion... RegExp excempel: eller snarare Spellar ingen roll! ...fast nu var det Det har du ju rätt i Stefan. Jag måste erkänna att jag tittade för hastigt på ditt svar. Sen är ju frågan om man ska (även om man kan i VBScript) ge en variabel samma namn som ett befintligt objekt... därav mitt val att ge variabeln namnet "Re" istället för "RegExp". Finns det några kända problem med detta i vb världen? Stor bokstav = mellanrum
AnnaBok;4,32;6,23;KalleKula;3,21;6,32 osv....
Jag skulle vilja att AnnaBok blev såhär istället: Anna Bok alltså ett mellanslag före den ANDRA stora bokstaven.
Går det att göra med en replace eller hur går man tillväga?
Tack på förhand!Sv: Stor bokstav = mellanrum
<code>
Function fStr(str)
Dim aStr,i, j, tStr
aStr = Split(str,";")
If isArray(aStr) Then
For i = 0 To uBound(aStr)
If Not isNumeric(aStr(i)) Then
tStr = Mid(aStr(i),1,1)
For j = 2 To Len(aStr(i))
If ((Asc(Mid(aStr(i),j,1))>64) And (Asc(Mid(aStr(i),j,1))<91)) Or (Mid(aStr(i),j,1)="Å") Or (Mid(aStr(i),j,1)="Ä") Or (Mid(aStr(i),j,1)="Ö") Then
tStr = tStr & " " & Mid(aStr(i),j,1)
Else
tStr = tStr & Mid(aStr(i),j,1)
End If
Next
aStr(i) = tStr
End If
Next
End If
fStr = Join(aStr,";")
End Function
</code>
Går garanterat att göra enklare... t.ex med reguljära uttryck...Sv: Stor bokstav = mellanrum
Function FixLetters(Value)
Dim RegExp As New RegExp
RegExp.Pattern = "([a-zåäö])([A-ZÅÄÖ])"
RegExp.Global = True
FixLetters = RegExp.Replace(Value, "$1 $2")
End Function
Sv:Stor bokstav = mellanrum
<code>
Function FixLetters(Value)
Set Re = New RegExp
Re.Pattern = "([a-zåäö])([A-ZÅÄÖ])"
Re.Global = True
FixLetters = Re.Replace(Value, "$1 $2")
Set Re = Nothing
End Function
</code>Sv: Stor bokstav = mellanrum
Då det är en funktion och det inte kommer någon kod efter i funktionen så spelar det ingen roll.
Varaibeln kommer att gå out-of-scope därmed ev. referensräknare minskas med ett.
Referensräknare når noll och objektet frigörs.
Om det varit fler än en objekt variabel som använts, t.ex. En connection och ett recordset och du vill ha kontroll i vilken ordning objekten frigörs. Så kan man skriva <code>Set VarName = Nothing</code>
Men för detta exempel är det "helt" orelevant, enligt min åsikt.
Om din åsikt skiljer sig från mig så får du vara vänlig att motivera/argumentera för den.Sv:Stor bokstav = mellanrum
<code>
Dim RegExp As New RegExp
</code>
som jag syftade på... för jag antog(antar) att det är VBScript han använder...Sv: Stor bokstav = mellanrum
Om du i ditt inlägg sagt vad och varför du gjort det så hade jag nog förstått.
J<g är ju bara mänskilg även om jag av klaskamrater blivit kallad den mänskliga kompilatorn. ;)
Har inte tillgång till ASP på datorn jag sitter vi så jag skriver/testat vb koden i VB6.
För ASP borde det givetvis vara:
Function FixLetters(Value)
Dim RegExp
Set RegExp = New RegExp
RegExp.Pattern = "([a-zåäö])([A-ZÅÄÖ])"
RegExp.Global = True
FixLetters = RegExp.Replace(Value, "$1 $2")
End Function
Jag tycker att man bör deklarera sina variabler. Om man anger Option Explicit krävs att samtliga variabler deklareras. Då upptäcker man mycket lätt om man stavat fel på ett variabel namn.
Sv:Stor bokstav = mellanrum
Sv: Stor bokstav = mellanrum
Är väl en konvention som kommer från andra språk?