---
title: "Mellanrum = Auto + i sökning?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/asp/39773-mellanrum-auto-i-sökning"
topic: "ASP"
topic_url: "https://www.webforum.nu/amne/asp"
author: "Lazerzubb"
published: "2002-03-16T14:13:02.000Z"
updated: "2002-03-17T08:36:44.000Z"
replies: 2
views: 244
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/39773-mellanrum-auto-i-sökning"
---

# Mellanrum = Auto + i sökning?

## #1 — Lazerzubb, 2002-03-16T14:13Z

Så här ser den kod ut som hanterar sökningen (ja tack, vem det nu var jag fick det av) men hur gör man så att alla mellanslag blir som att det är det + i sökningen?

Som när man söker med Google eller någon annan sökmotor så behövs det bara ett mellanrum istället för ett +.

```
<%
Response.Cachecontrol="Public"
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "driver={Microsoft Access Driver (*.mdb)};dbq=search.mdb"
dim i,j,mQuery,mQueryArr,mAndArr,mNotArr,mOrArr,mSQL,mWhere
'grunddelarna i frågan
mSQL="SELECT * FROM search1 WHERE " 
mWhere="(country LIKE '%%') OR (province LIKE '%%') OR (city LIKE '%%')"
'sökfältets värde
mQuery=request.form("fsearch")
'loopa igenom allt och ersätt mellanslag inom citattecken med chr(1). 
'Denna bit går att göra med reguljära uttryck också
for i=1 to len(mQuery)
mAsc=asc(mid(mQuery,i,1))
if mAsc=34 then
mCount=mCount+1
blnInQ=not blnInQ
else
if blnInQ and mAsc=32 then
mQuery=left(mQuery,i-1) & chr(1) & mid(mQuery,i+1)
end if
end if

next

'om antalet citattecken är ojämnt ignoreras de helt
if mCount mod 2 <> 0 then
mQuery=replace(mQuery,chr(1)," ")
end if

'ta bort citattecknen
mQuery=replace(mQuery,chr(34),"")

'ersätt mellanslag med chr(0) och mellanslag
mQuery=chr(0) & replace(mQuery," "," " & chr(0))

'splitta upp i en array
mQueryArr=split(mQuery," ")

'skapa arrayer för AND, AND NOT och OR. 
'chr(0) gör det nu möjligt att matcha endast början på strängarna
mAndArr=filter(mQueryArr,chr(0) & "+",true)
mQueryArr=filter(mQueryArr,chr(0) & "+",false)
mNotArr=filter(mQueryArr,chr(0) & "-",true)
mQueryArr=filter(mQueryArr,chr(0) & "-",false)

'återskapa strängarna (ersätt chr(1) med mellanslag) och
'skapa WHERE-satser i arrayerna
for i=0 to ubound(mAndArr)
mAndArr(i)=replace(mAndArr(i),chr(1)," ")
mAndArr(i)=replace(mWhere,"%%","%" & mid(mAndArr(i),3) & "%")
next
for i=0 to ubound(mNotArr)
mNotArr(i)=replace(mNotArr(i),chr(1)," ")
mNotArr(i)=replace(mWhere,"%%","%" & mid(mNotArr(i),3) & "%")
next
for i=0 to ubound(mQueryArr)
mQueryArr(i)=replace(mQueryArr(i),chr(1)," ")
mQueryArr(i)=replace(mWhere,"%%","%" & mid(mQueryArr(i),2) & "%")
next

'tejpa ihop en färdig fråga
mQuery=join(mQueryArr," OR ")
if mQuery<>"" then 
mQuery="(" & mQuery & ")"
if ubound(mAndArr) > -1 then mQuery=mQuery & " AND "
end if
mQuery=mQuery & join(mAndArr," AND ")
if mQuery<>"" and ubound(mNotArr) > -1 then mQuery=mQuery & " AND NOT "
mQuery=mSQL & mQuery & join(mNotArr," AND NOT ")

set rs=Connection.execute (mQuery)

%>
```

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

## #2 — Bengan, 2002-03-16T23:57Z

Du menar alltså att den automatiskt skall söka på ALLA ord?

Tror du får ändra OR till AND nedan:

```
'tejpa ihop en färdig fråga
mQuery=join(mQueryArr," [b]OR[/b] ")
```

Kanske på fler ställen, ögnade bara snabbt igen nu ;)

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

## #3 — Lazerzubb, 2002-03-17T08:36Z

Säg att du söker på:

Sverige+ Öland+ Bornholm

Hur gör jag då för att man bara ska behöva skriva

Sverige Öland Bornholm

Och inte behöva skriva +  ???
Men det ska även fungera om man skriver + i strängen.

(det verkade inte fungera bengan)

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

---

Tråden på webben: https://www.webforum.nu/amne/asp/39773-mellanrum-auto-i-sökning
