webForumDet fria alternativet

Räkna vissa tecken?

ASP

12 svar · 513 visningar · startad av voigtann1

Medlem sedan juni 20019 519 inlägg
Frågan#1

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...

Medlem sedan dec. 20025 483 inlägg
#2

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.

Medlem sedan juni 20019 519 inlägg
#3

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?

Medlem sedan dec. 20025 483 inlägg
#4

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)
Medlem sedan juni 20019 519 inlägg
#5

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

Medlem sedan dec. 20025 483 inlägg
#6

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
Medlem sedan maj 200010 687 inlägg
#7

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...

Medlem sedan juni 20019 519 inlägg
#8

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...

Medlem sedan maj 200010 687 inlägg
#9

Och detta gör du i en textsträng?
Hur ser den textsträngen ut?

Medlem sedan juni 20019 519 inlägg
#10

Det vet jag inte...eftersom man skall kunna ändra den men exempel

AAA CCC
BBB DDD
xxxxxxx
Medlem sedan juni 20019 519 inlägg
#11

DVS i slut kanten kommer det vara tabeller med A1 A2 A3 [mellanrum] C1 C2 C3

Medlem sedan juni 20019 519 inlägg
#12

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;"">&nbsp;</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?

Medlem sedan juni 20019 519 inlägg
#13

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 ?

256 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)