Jag vill veta positionen för ett mellanslag i en sträng.
instr(sträng," ")
fungerar bara för "riktiga" mellanslag och inte & n b s p ;
Hur gör jag?
20 svar · 445 visningar · startad av i-or
Jag vill veta positionen för ett mellanslag i en sträng.
instr(sträng," ")
fungerar bara för "riktiga" mellanslag och inte & n b s p ;
Hur gör jag?
Nej det fungerar inte.
För mig fungerar det alldeles utmärkt när jag testar.
Response.Write instr("Jag testar lite bara", " ")
Resultatet är 4.
Jo då fungerar det. Men då har du använt vanliga mellanslag och inte & n b s p ;. Du kanske inte såg min redigering i det första inlägget.
Du ser ju i min kod att jag använt eller :q
Problemet är nog att jag hämtar strängen från en databas (Access) och då fungerar inte din kod.
Edit: Jag såg det inte första gången då jag skrev svaret.
kan man inte göra replace och sen instr... kanske inte den bästa lösningen :e
Varför skulle det inte fungera när du hämtar från en databas? Gör du dina kontroller både mot vanligt mellanslag och ?
Exakt hur ser strängarna som är lagrade i databasen ut?
Förlåt för dubbel posten nu men:
Din databas.. har du i den? och sen kör typ html.encode.. då blir ju & = &:
Så här har jag gjort:
Jag kopierade en tabell från nätet (vars kod har & n b s p; som mellanslag) till Excel och sedan till Access.
Från Access kör jag sedan instr utan att använda Server.HTMLEncode eller något annat.
Jag vet inte vad som kan ha ändrats på vägen till databasen.
Om jag kopierar direkt från htmlsidan till Access så fungerar det. Men jag behöver modifiera tabellen i Excel först. Har någon nån aning om vilket tecken Excel ändrar & n b s p ; till?
Det fungerar alltså varken med " " eller med & n b s p ;.
strText = [i]din text[/i]
strText = Replace(strText, " ", " ")
Response.Write InStr(strText, Chr(32))
Kan du inte kika i Access, och se vad som ligger lagrat där?
Engines kod fungerade inte.
@nders: Hur kan jag se skillnad mellan ett mellanslag och ett mellanslag i Access?
Det borde gå att se skillnad, tycker jag? Exempelvis; har du lagrat i tabellen istället för vanliga mellanslag så står det där. Du kan annars prova att på en asp-sida skriva ut innehållet i fältet mha server.htmlencode, då borde du får rätt bra koll på vad som ligger lagrat.
mvh
Känns som om Micro$oft gjort så bara för att jäklas med oss hederliga användare... ;)
Ytterligare problem :(
För att jag ska kunna köra
instr(sträng,"& # 1 6 0 ;")
måste jag först ta Server.HTMLEncode för att instr ska hitta det konstiga tecknet.
Om det finns andra tecken som HTMLEncode gör om blir positionen fel.
Kan man på något sätt köra Server.HTMLEncode baklänges för jag vill egentligen inte köra HTMLEncode? Eller kan man på något sätt köra HTMLEncode bara på ett visst tecken (& # 1 6 0 ; )?
Glöm det! Det lättaste var att ersätta konstiga tecknet redan i Excel så slapp jag det bekymret.