Det här kan man lösa på ett flertal sätt, t.ex:
function countchar(s,c)
countchar = ubound(split(s,c))
end function
Där s är strängen du vill söka igenom och c är det tecken som skall räknas.
12 svar · 513 visningar · startad av voigtann1
Om jag har en text sträng som ser ut såhär:
"xx xx xxxx dd mmmmmm" kan man på något sätt få reda på hur många x,d och m det finns? (det kommer handla om flera olika tecken inte bara dessa 3...
Det här kan man lösa på ett flertal sätt, t.ex:
function countchar(s,c)
countchar = ubound(split(s,c))
end function
Där s är strängen du vill söka igenom och c är det tecken som skall räknas.
men om man inte vet vilket tecken det är? kör man någon regular utryck då?
Kanske skapa en array och sen kontrollera alla i array(1) vilket tecken det är och hur många det är?
Du kan låta funktionen returnera en array a, där a(0) innehåller tecknet och a(1) antalet förekomster:
s = "xx xx xxxx dd mmmmmm"
function countchar(s,c)
countchar = array(c,ubound(split(s,c)))
end function
dim res
res = countchar(s,"m")
response.write res(0) & ": " & res(1)
men den kontroll blir ju 24 rader om jag kan tänka mig kolla igenom alla tecken från a-z... ska kolla vidare på dina koder :D
Jag är lite osäker på hur du menar, men några olika varianter kan vara:
s = "xx xx xxxx dd mmmmmm"
function countchar(s,c)
countchar = ubound(split(s,c))
end function
for i = asc("a") to asc("z")
response.write chr(i) & ": " & countchar(s, chr(i)) & "<br>"
next
s = "xx xx xxxx dd mmmmmm"
function countchar(s,c)
countchar = ubound(split(s,c))
end function
function findchars(s)
tmp = s
for i = 1 to len(tmp)
tmp = left(tmp, i) & replace(tmp, mid(tmp, i, 1), "", i + 1)
next
findchars = tmp
end function
str = findchars(s)
for i = 1 to len(str)
response.write mid(str, i, 1) & ": " & countchar(s, mid(str, i, 1)) & "<br>"
next
Jag hänger inte riktigt med vad det är du vill åstadkomma. Men det verkar som att ett regulärt utryck nog hade varit smidigast. Ganska mycket snyggare och bättre prestandamässigt om man jämför med att loopa en massa...
jag försöker rita upp platser till ett lan... där platser är exempel D1-D20 på en rad... men det kan också vara att det är D1-D5 sen kommer E1-E4 sen kommer flera D... då vill jag ju ha D5-> osv.. därför vill jag få någon Reg.exp lösning...
Och detta gör du i en textsträng?
Hur ser den textsträngen ut?
DVS i slut kanten kommer det vara tabeller med A1 A2 A3 [mellanrum] C1 C2 C3
Snurrar i huvudet hos mig här :e men jag har lite idéer:
<table cellspacing=1 cellpadding=2>
<tr>
<%
u = 1
myString = s
Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = true
objRegExp.Pattern = " "
myString = objRegExp.Replace(myString,chr(2))
objRegExp.Pattern = vbCrLf
myString = objRegExp.Replace(myString,chr(1))
objRegExp.Pattern = "([a-z])"
myString = objRegExp.Replace(myString," <td style=""width:20PX;background-color:#339;border:1px solid #000;text-align:center;"">$1</td>"& vbCrLf)
objRegExp.Pattern = chr(2)
myString = objRegExp.Replace(myString," <td style=""width:20PX;background-color:#fff;""> </td>"& vbCrLf)
objRegExp.Pattern = chr(1)
myString = objRegExp.Replace(myString," </tr>"& vbCrLf &" <tr>")
response.Write myString
%>
</tr>
</table>
Denna gör nu min "layout" kom på en sak att den egentligen kanske skall ersätta [bokstav+nummer] då kan man göra kontroll och se om plats redan är bokad också..
Kanske ska göra en "2D" Array istället?
försöker lista ut en ny sak med regexp men problemet är fortfarande hur ska den veta att:
aaaba
att den kommer att skriva ut
a1a2a3b1a4 ?