---
title: "ta bort bokstäver ur sträng"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/54313-ta-bort-bokstäver-ur-sträng"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "ShoGun"
published: "2002-09-26T09:51:41.000Z"
updated: "2002-09-30T18:33:04.000Z"
replies: 19
views: 798
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/asp/54313-ta-bort-bokstäver-ur-sträng"
---

# ta bort bokstäver ur sträng

## #1 — ShoGun, 2002-09-26T09:51Z

har en sträng som kan innehålla både siffror och text 
tex. a="w2e3m"

nu vill jag ändra så att alla bokstäver tas bort.
tex. så skulle ovanstående bli a="23"

Permalänk: https://www.webforum.nu/p/54313

## #2 — icaaq, 2002-09-26T10:02Z

Jag vet inte hur avancerat du vill ha det. men jag skulle nog vilja ge dig denna länk:
<http://www.webeye.nu/default2.asp?que=asp/default.asp&exec=asp/artiklar/asp_11.asp>
Där går Vide igenom Regular Exp. på ett mycket smidigt sätt, och om inte du vill/kan lära dig ¨nått av den artikeln så kommer det säkert upp några förslag hur du får bort dina bokstäver ur din string.

mvh icaaq

Permalänk: https://www.webforum.nu/p/797297

## #3 — ShoGun, 2002-09-26T10:23Z

får syntax error på   Set objRegExp = New regexp

Permalänk: https://www.webforum.nu/p/797304

## #4 — Viktor, 2002-09-26T10:32Z

Om det bara är korta stängar så är det nog lättare att bara göra en loop som går igenom hela strängen och flyttar över alla siffror från strängen till en temporär sträng och när loopen är klar så sätts strängen lika med den temporära strängen.

/Viktor

Permalänk: https://www.webforum.nu/p/797305

## #5 — ShoGun, 2002-09-26T10:34Z

skulle du kunna ge ett kod exempel viktor?

Permalänk: https://www.webforum.nu/p/797307

## #6 — Viktor, 2002-09-26T11:24Z

Har inte VB installerat så jag kan inte prova koden men något sånthär borde fungera

```
dim str as string
dim tmp as string
dim i as integer
str = "w2e3m"
tmp=""
for i=0 to str.length
  if IsNumeric(mid(str,i,1)) then
    tmp=tmp+mid(str,i,1)
  end if
next i
str=tmp
```

Jag är lite osäker på hur man kollar längden på en sträng så str.length kanske inte fungerar.

/Viktor

Permalänk: https://www.webforum.nu/p/797337

## #7 — Palleman, 2002-09-26T12:22Z

Jag löste det på detta sätt.. :)

```
<%
  
a = "w2e3m"
iA = Len(a)
  
For i = 1 To iA
	If IsNumeric(Left(a,1)) Then
		intNumeric = intNumeric & Left(a,1)
		a = right(a, iA-i)
	Else
		strText = strText & Left(a,1)
		a = right(a, iA-i)
	End If
Next
  
Response.Write ""&_
"Bokstäver: "& strText &"<br>"&_
"Siffror: "& intNumeric 
 
%>
```

Permalänk: https://www.webforum.nu/p/797406

## #8 — Rozzi, 2002-09-29T17:13Z

Hej allihop..
Jag har ett liknande problem. Min sida är så här:
1) Användaren väljer en "kompetens" klickar på nästa.
2) Sökning ska ske i databasen efter alla personer som har den kompetensen
3) Resultatet ska visas på skärmen i form av en matris

Problem
1) Varje person kan ha flera kompetenser har för tillfället avgränsat dom så att en ";" står mellan varje kompetens i databsen
2) När användaren klickar på "skicka" så skickas ett tal, ingen text som "alla" ger exempel på. (Vet inte om det spelar nån roll)

Problem so far:
Jag kollade den sidan som icaaq skrev, skitbra sida, jag använder den koden men... :q

1) Hur gör jag för att få sökningen att inkludera alla personer i databasen och inte den första? antalet personer i databasen är X

2) Hur gör jag med avgränsaren, om Nisse har kompetens 1;2;6
så ska han vara med i matrisen, om användaren söker på kompetens 2.

Riktig amatör fråga eller hur, om man förstår vad jag menar alltså. :r

Koden jag använder för tillfället

```
KompString = request("komp")
myString = ObjPersoner("Kompetenser")

Set objRegExp = New regexp
objRegExp.Global = true
objRegExp.IgnoreCase = false
objRegExp.Pattern = KompString
Set myMatches = objRegExp.Execute(myString)

Response.Write "Hittade "&myMatches.Count&"st träff(ar)<br><br>"

For each item in myMatches
  Response.Write "Hittade en träff vid position "&item.FirstIndex&", som är "&item.Length&" tecken lång. Värdet är <b>"&item.Value&"</b><br>"

Next
```

Tack i förhand

Permalänk: https://www.webforum.nu/p/802690

## #9 — LarsG, 2002-09-29T17:24Z

> Problem 
> 1) Varje person kan ha flera kompetenser har för tillfället avgränsat dom så att en ";" står mellan varje kompetens i databsen

 

Du har rätt i att detta är problemet. Det är helt fel datamodell för att lagra flera attribut för en användare.

Skapa en till tabell med två kolumner

```
create table userCompetence(userid int, comptenceId int)
```

lagra varje kombination av userid/CompetenceId som en post i denna tabell. Dvs, om userid 4711 har kompetenserna 1,2 och 6 
så blir det tre poster i tabellen.

För att hitta alla användare med en viss kompetens.

```
q = "select * from users where userid in (select userid from userCompetence where competenceId = " & request.form("competence") & ")"
```

Permalänk: https://www.webforum.nu/p/802706

## #10 — Rozzi, 2002-09-29T17:42Z

Det underlättar ju mitt arbete mycket om jag gör som du säger LarsG, men är det det "bästa" sätter att göra det.

Jag vet inte, det  låter som en lång sökning för oss människor, men kanske är rena barnleken för datorn.

Jag strävar efter perfektion  :e

Permalänk: https://www.webforum.nu/p/802735

## #11 — LarsG, 2002-09-29T17:46Z

Det är mycket effektivare. Om man bara har ett värde i varje kolumn så kan man använda index för sökningen,dvs man kan direkt hitta de poster som är relevanta. Med den design du har så måste databashanteraren läsa alla poster.

Permalänk: https://www.webforum.nu/p/802739

## #12 — Rozzi, 2002-09-29T20:18Z

Tack för hjälpen LarsG, det funkar super nu!!
Men nu behöver jag mer hjälp, riktig nybörjar hjälp :D

Finn fem fel

```
<%
DIM KompString, ObjHeader
KompString = Request("UnderGrupp")
IF KompString = "" THEN
response.redirect "index2.asp?Error"
ELSE
HeaderString = "Select * FROM Header WHERE KompetensID =" & KompString
SET ObjHeader = Server.CreateObject("ADODB.RecordSet")
ObjHeader.Open HeaderString, objConn

'JAG VET ATT DETTA ÄR FEL.
ForetagsString = "Select * FROM Companys WHERE ForetagsID =" & ObjHeader("ForetagsID")
SET ObjForetag = Server.CreateObject("ADODB.RecordSet")
ObjForetag.Open ForetagsString, ObjConn%>

<TABLE BORDER=1 CELLSPACING=3 cellpadding="3">
<TR><TD>FöretagsNamn</TD><TD>Adress</TD><TD>Representant</TD><TD>Epost</TD><TD>Telefon</TD><TD>Fax</TD><TD>Hemsida</TD></TR>
<TR >
<%
DO WHILE NOT objHeader.EOF
IF NOT objHeader.EOF THEN%>
<TD><FONT SIZE=-1><%response.write ObjForetag("ForetagsNamn")%></TD>
<TD><FONT SIZE=-1><%IF ObjForetag("Adress1") = "" THEN response.write "Uppgifter saknas" ELSE response.write ObjForetag("Adress1") END IF%><BR>
	<%IF ObjForetag("Adress2") = "" THEN response.write "Uppgifter saknas" ELSE response.write ObjForetag("Adress2") END IF%></TD>
<TD><FONT SIZE=-1><%IF ObjForetag("Representant") = "" THEN response.write "Uppgifter saknas" ELSE response.write ObjForetag("Representant")END IF%></TD>
<TD><FONT SIZE=-1><%IF ObjForetag("Epost") = "" THEN response.write "Uppgifter saknas" ELSE response.write "<A HREF=mailto:" & ObjForetag("Epost") &">" & ObjForetag("Epost") &" </A>"END IF%></TD>
<TD><FONT SIZE=-1><%IF ObjForetag("Telefon") = "" THEN response.write "Uppgifter saknas" ELSE response.write ObjForetag("Telefon") END IF%></TD>
<TD><FONT SIZE=-1><%IF ObjForetag("Fax") = "" THEN response.write "Uppgifter saknas" ELSE response.write ObjForetag("Fax") END IF%></TD>
<TD><FONT SIZE=-1><%IF ObjForetag("Hemsida") = " " THEN response.write "Uppgifter saknas" ELSE response.write "<A HREF =" & ObjForetag("Hemsida") &">"& ObjForetag("ForetagsNamn") & "</A></TD>" END IF
response.write "</TR>"
objHeader.MOVENEXT
END IF
LOOP
END IF%>
</TABLE>
```

 :r Den fyller i listan en gång sen hoppar den ur loopen, när det fortfarande inte är EOF vad gör jag fel. Samt andra småfel kan också föras fram till ljuset

2½ frågor kvar
Varför funkar inte IF satsen i loopen? När hemsida saknas så skriver den företagsnamnet, men hänvisar till samma sida, den ska ju skriva "uppgifter saknas"

```
<%IF ObjForetag("Hemsida") = " " THEN response.write "Uppgifter saknas" ELSE response.write "<A HREF =" & ObjForetag("Hemsida") &">"& ObjForetag("ForetagsNamn") & "</A></TD>" END IF
```

Och finns det inget man kan skriva som typ (Svensk översättning) "Om någon av cellerna är tomma, skriv 'uppgift saknas'" 
istället för att jag skriver en massa if satser

Detta är mer en HTML fråga 
Finns det inget annat sätt att ändra på fontstorleken förutom det sätt som jag har gjort? Kan nada CSS btw (kodexempel skulle vara väldigt bra)

Och försök hålla svaren så nära svenskan som möjligt, eftersom jag är fortfarande en "n00b"  :birp

Permalänk: https://www.webforum.nu/p/802878

## #13 — solbulle, 2002-09-29T22:12Z

Ang. hemsidefältet är det nog eftersom du jämför med ett blanksteg där, ta bort mellan rummet:

```
IF ObjForetag("Hemsida") = ""
```

eller kanske bättre:

```
IF ObjForetag("Hemsida") <> ""
```

Permalänk: https://www.webforum.nu/p/802934

## #14 — solbulle, 2002-09-29T22:20Z

> Den fyller i listan en gång sen hoppar den ur loopen...

Är den inte slut? Vilket rs syftar du på egentligen? Det är väl bara den första posten från ObjHeader("ForetagsID") du får fram. Du måste flytta in den sql-frågan i loopen för att få fram flera poster.

Men egentligen är det väl fel att göra så där, ska till en join och plocka ut allt i en sql-fråga skulle jag tro. (Som de lärda lär visa dig.)

Permalänk: https://www.webforum.nu/p/802938

## #15 — Rozzi, 2002-09-30T11:48Z

Solbulle:
IF satsen funkar inte. Det spelar ingen roll om jag skriver "", " " eller \<\> "", den skriver ändå inte uppgift saknas. Temporärt så har jag satt 

```
IF objforetag("Hemsida") = "." Then response.write "Uppgift saknas" else ... END IF
```

Jag har alltså skrivit in en punkt för varje ställe i databsen där det fattas uppgifter.

Vad jag menade med den hoppar ur loopen är att om det finns två personer (A och B) som har kompetens ABC så visas bara person A
Alltså istället för att skriva:
Person:Kompetens:X:Y:Z
A:ABC:X:Y:Z
B:ABC:X:Y:Z

så skriver den
A:ABC:X:Y:Z
A:ABC:X:Y:Z

förstår du vad jag menar nu med att den "hoppar ut ur loopen"
Den visar bara första personen i listan med rätt kompetens, om det finns 20 personer med samma kompetens visas den första personen 20 gånger

Permalänk: https://www.webforum.nu/p/803278

## #16 — solbulle, 2002-09-30T12:42Z

Jo... när du kör denna:

```
HeaderString = "Select * FROM Header WHERE KompetensID =" & KompString
```

Får du kanske 20 träffar, sen kör du denna:

```
ForetagsString = "Select * FROM Companys WHERE ForetagsID =" & ObjHeader("ForetagsID")
```

Men problemet, som jag ser det, är att du kör den med den första träffen av ObjHeader("ForetagsID"). 
Senare loopar du 20 gånger men du ändrar ju aldrig ObjHeader("ForetagsID"). Mao måste du ha in den sql-frågan i loopen. Tror jag...

Typ:

```
<%
DIM KompString, ObjHeader
KompString = Request("UnderGrupp")
IF KompString = "" THEN
response.redirect "index2.asp?Error"
ELSE
HeaderString = "Select * FROM Header WHERE KompetensID =" & KompString
SET ObjHeader = Server.CreateObject("ADODB.RecordSet")
ObjHeader.Open HeaderString, objConn

DO WHILE NOT objHeader.EOF
IF NOT objHeader.EOF THEN
'JAG VET ATT DETTA ÄR FEL.
ForetagsString = "Select * FROM Companys WHERE ForetagsID =" & ObjHeader("ForetagsID")
SET ObjForetag = Server.CreateObject("ADODB.RecordSet")
ObjForetag.Open ForetagsString, ObjConn%>

<TABLE BORDER=1 CELLSPACING=3 cellpadding="3">
<TR><TD>FöretagsNamn</TD><TD>Adress</TD><TD>Representant</TD><TD>Epost</TD><TD>Telefon</TD><TD>Fax</TD><TD>Hemsida</TD></TR>
<TR >

<TD><FONT SIZE=-1><%response.write ObjForetag("ForetagsNamn")%></TD>
<TD><FONT SIZE=-1><%IF ObjForetag("Adress1") = "" THEN response.write "Uppgifter saknas" ELSE response.write ObjForetag("Adress1") END IF%><BR>
	<%IF ObjForetag("Adress2") = "" THEN response.write "Uppgifter saknas" ELSE response.write ObjForetag("Adress2") END IF%></TD>
<TD><FONT SIZE=-1><%IF ObjForetag("Representant") = "" THEN response.write "Uppgifter saknas" ELSE response.write ObjForetag("Representant")END IF%></TD>
<TD><FONT SIZE=-1><%IF ObjForetag("Epost") = "" THEN response.write "Uppgifter saknas" ELSE response.write "<A HREF=mailto:" & ObjForetag("Epost") &">" & ObjForetag("Epost") &" </A>"END IF%></TD>
<TD><FONT SIZE=-1><%IF ObjForetag("Telefon") = "" THEN response.write "Uppgifter saknas" ELSE response.write ObjForetag("Telefon") END IF%></TD>
<TD><FONT SIZE=-1><%IF ObjForetag("Fax") = "" THEN response.write "Uppgifter saknas" ELSE response.write ObjForetag("Fax") END IF%></TD>
<TD><FONT SIZE=-1><%IF ObjForetag("Hemsida") = " " THEN response.write "Uppgifter saknas" ELSE response.write "<A HREF =" & ObjForetag("Hemsida") &">"& ObjForetag("ForetagsNamn") & "</A></TD>" END IF
response.write "</TR>"
objHeader.MOVENEXT
END IF
LOOP
END IF%>
</TABLE>
```

Fast det är inte rätt sätt att lösa det på.

Permalänk: https://www.webforum.nu/p/803306

## #17 — Rozzi, 2002-09-30T12:58Z

Det låter vettigt :stud 
Fast öppnas också inte 20 kopplingar till databsen så som du har skrivit det eftersom du har med

```
SET ObjForetag = Server.CreateObject("ADODB.RecordSet")
ObjForetag.Open ForetagsString, ObjConn%>
```

 i loopen?

Permalänk: https://www.webforum.nu/p/803321

## #18 — Rozzi, 2002-09-30T13:18Z

TACK SOLBULLE!!!!

Jag har suttit i två dagar med det här problemet så fixar du det. ett stort tack ska du ha (Och ni andra också självklart :D)

Men frågan återstår.. skapas det inte en massa kopplingar till databasen om man har 

SET ObjForetag = Server.CreateObject("ADODB.RecordSet")
ObjForetag.Open ForetagsString, ObjConn%\>

med i loopen?

 :P

Permalänk: https://www.webforum.nu/p/803353

## #19 — solbulle, 2002-09-30T13:34Z

> Fast det är inte rätt sätt att lösa det på.

> Men egentligen är det väl fel att göra så där, ska till en join och plocka ut allt i en sql-fråga skulle jag tro. (Som de lärda lär visa dig.)

Jo precis, det är det som sker och det är verkligen inte bra, du skulle behöva en join istället men det är över min förmåga, men det var i alla fall det som var fel ;)

Får se om LarsG eller någon av de tyngre elefanterna behagar dansa in och fixa till det hela åt dig.

Permalänk: https://www.webforum.nu/p/803380

## #20 — Rozzi, 2002-09-30T18:33Z

Kan vi få in några tyngre elefanter att komma in här, dansande föredras, och hjälpa mig?  :birp

Permalänk: https://www.webforum.nu/p/803693

---

Tråden på webben: https://www.webforum.nu/amne/asp/54313-ta-bort-bokstäver-ur-sträng
