Jag har följande lilla fina funktion, som hämtar ut värdet som är omslutet av brackets, i en sträng.
'Funktion för att hämta värden mellan brackets
function GetBracketedPart(s)
dim m, re, sResult
set re = new regexp
re.pattern = "\[([^\]]+)\]"
if re.test(s) then
set m = re.execute(s)
sResult = m(0).submatches(0)
else
sResult = ""
end if
GetBracketedPart = sResult
end function
Hur modifierar jag den att hantera
[12345 KOD]
Dvs mha parameter hämta ut antingen 12345 eller KOD?
Det är alltid mellansteg mellan.
Funderade på om man kan använda split på något sätt, och sen styra vilken position man vill ha i funktionens parametrar.
Typ:
'Funktion för att hämta värden mellan brackets
function GetBracketedPart(s, sPos)
dim m, re, sResult
set re = new regexp
re.pattern = "\[([^\]]+)\]"
if re.test(s) then
set m = re.execute(s)
sResult = m(0).submatches(0)
else
sResult = ""
end if
GetBracketedPart = sResult
end function
'Funktion för att hämta värden mellan brackets
function GetBracketedPart(s)
dim m, re, sResult
set re = new regexp
re.pattern = "\[([^\]]+)\]"
if re.test(s) then
set m = re.execute(s)
sResult = m(0).submatches(0)
else
sResult = ""
end if
GetBracketedPart = Split(sResult)
end function
GetBracketPart(...)(0) om något, fast du vill inte köra detta varje gång, spara resultatet i en variabel och anropar variabeln än att anropar samma funktion två gånger:
'Funktion för att hämta värden mellan brackets
function GetBracketedPart(s, pos)
dim a, m, re, sResult
set re = new regexp
re.pattern = "\[([^\]]+)\]"
if re.test(s) then
set m = re.execute(s)
a = split(m(0).submatches(0))
sResult = a(pos)
else
sResult = ""
end if
GetBracketedPart = sResult
end function
s = "[12345 KOD]"
Function GetBracketedPart(value, pos)
dim m, re, sResult
set re = new regexp
re.pattern = "\[([^\]]+)\]"
if re.test(s) then
re.pattern = "[^\s\[\]]+"
re.global = true
set m = re.execute(value)
if pos - 1 < m.count then
sResult = m(pos - 1)
end if
else
sResult = ""
end if
GetBracketedPart = sResult
End Function
response.write GetBracketedPart(s, 1) ' -> 12345
response.write GetBracketedPart(s, 2) ' -> KOD
Ja, dock så ser jag fortfarande inte varför du gör det som du gör..
redigerad, återkommer.
<%
s = "[12345 KOD]"
Function GetBracketedPart(value, pos)
dim m, re, sResult
set re = new regexp
re.pattern = "\[([^\]]+)\]"
if re.test(s) then
If pos = "" Then
set m = re.execute(value)
sResult = m(0).SubMatches(0)
Elseif IsNumeric(pos) Then
re.pattern = "[^\s\[\]]+"
re.global = true
set m = re.execute(value)
if pos - 1 < m.count then
sResult = m(pos - 1)
end if
end if
else
sResult = ""
End If
GetBracketedPart = sResult
End Function
response.write GetBracketedPart(s, 1) & "<br />" ' -> 12345
response.write GetBracketedPart(s, "") & "<br />" ' -> 12345
response.write GetBracketedPart(s, 2) & "<br />" ' -> KOD
%>
251 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849