Avatar billede sp Nybegynder
14. november 2000 - 22:15 Der er 14 kommentarer og
1 løsning

Instr med linjeskift??

Hejsa.

Jeg har et problem med et linjeskift i min tekstfiler.
Jeg ønsker at lave scriptet så det også er muligt at have et linjeskift i strengen.

Kan det ikke lade sig gøre?
Hvilket skal man bruge?

Jeg har forsøgt med:
vbCrLf og Chr(13)
jeg har også forsøgt at bruge Trim(), men det virker heller ikke..

Håber nogle kan hjælpe
Avatar billede tdaugaard Nybegynder
14. november 2000 - 22:18 #1
Linie skift ?
Du vil finde linieskift i en streng ?
Avatar billede sjensen Nybegynder
14. november 2000 - 22:36 #2
chr(13) er ikke linieskift men \"vogn retur\" som det kaldes i gamle dage fra skrivemaskinernes tid.

chr(10) er linieskift og man bruger dem som regel sammen,

chr(10) og chr(13)

prøv evt. med #10#13

f.eks. \'tekstlinie 1\'+#10#13+\'tekstlinie2\'
Avatar billede sp Nybegynder
14. november 2000 - 22:39 #3
Nej jeg vil finde pladsen for linjeskiftet + 1 d.v.s. pladsen efter linjeskiftet, så jeg får det første tegn.

Hvis jeg har en tekstfil f.eks. med html, er en del af koden på næste linje, og det kan instr ikke finde ud af uden videre.
Søg efter tegnet efter \'*\' (*+1)

Eks.
blablabla*
cscscs
den skal så returnere \'c\'







Avatar billede sjensen Nybegynder
14. november 2000 - 22:42 #4
ok, så prøv at søge efter #13 istedet for *. NB! du skal ikke sætte #13 i anførselstegn
Avatar billede sp Nybegynder
14. november 2000 - 22:50 #5
Nej jeg skal have den til at finde \'c\' efter linjeskiftet
Avatar billede tdaugaard Nybegynder
14. november 2000 - 22:55 #6
intPos = InStr(\"en streng \" & vbCrLf & \"med linieskift.\", vbCrLf) + 1

eh ?? eller så er det nogle underlige linieskift du holder dig til ...
Avatar billede tdaugaard Nybegynder
14. november 2000 - 22:57 #7
Nej, faktisk skal du plusse med 2 da den smider starten af vbCrLf tilbage.. (og VbCrLf er 2 tegn..)
Avatar billede sp Nybegynder
14. november 2000 - 23:05 #8
For at være helt præcis er det mit script der skal læse meta-tags.
<Meta name=\"description\" content=
\"Hejsa dette er en test\">

Jeg skulle så gerne have funde \", men den finder ikke noget af det.

If instr(line,\"<meta name=\"\"description\"\" content=\" & vbCrLf &\" \"\" \") then
startBesk = Instr(1,line,\"<meta name=\"\"description\"\" content=\" & vbCrLf & \" \"\" \")+1
Avatar billede tdaugaard Nybegynder
14. november 2000 - 23:08 #9
hæ hæ .. okay, nu skal du høre.

Hvis du søger på en streng \'noget tekst\' for eksempel, så hvis den findwer noget, får du positionen på STARTEN af strengen i den streng du søger i. Derfor vil du ved:

If instr(line,\"<meta name=\"\"description\"\" content=\" & vbCrLf &\" \"\" \") then

få returnerert 1, da < er det første tegn.

brug istedet f.eks.

If instr(line, \"content=\" & chr(34)) then

så får du starten af content ..
Avatar billede sp Nybegynder
14. november 2000 - 23:23 #10
>If instr(line,\"<meta name=\"\"description\"\" >content=\" & vbCrLf &\" \"\" \") then

>få returnerert 1, da < er det første tegn.
>brug istedet f.eks.

Når sådan virker den nu ved tekstfiler hvor der IKKE er linjeskift.

>If instr(line, \"content=\" & chr(34)) then

>så får du starten af content ..
chr(34) hvor mange er der. Er der nogen liste på det?
Den prøver jeg
Avatar billede tdaugaard Nybegynder
14. november 2000 - 23:25 #11
chr(ascii) returnere tegnet som streng.

f.eks. 34 er \" .. 32 er mellemrum, 64 er @ etc.
Avatar billede sp Nybegynder
14. november 2000 - 23:37 #12
Sådan her kommer det til at se ud.
Den undersøger først det ene og hvis den ikke finder noget, så det andet..

vh Søren Peter

If instr(line,\"name=\"\"description\"\" content=\" & vbCrLf  & chr(34)) then
startBesk = Instr(1,line,\"name=\"\"description\"\" content=\" & vbCrLf  & chr(34))-4
Besk=1
elseIf instr(line,\"name=\"\"description\"\" content=\" & vbCrLf  & chr(34)) then
startBesk = Instr(1,line,\"name=\"\"description\"\" content=\" & vbCrLf  & chr(34))
Besk=1
End if

Avatar billede sp Nybegynder
14. november 2000 - 23:39 #13
Om igen:

If instr(line,\"name=\"\"description\"\" content=\"\"\") then
startBesk = Instr(1,line,\"name=\"\"description\"\" content=\"\"\")
Besk=1
om igen

elseIf instr(line,\"name=\"\"description\"\" content=\" & vbCrLf  & chr(34)) then
startBesk = Instr(1,line,\"name=\"\"description\"\" content=\" & vbCrLf  & chr(34))-4
Besk=1
End if

Avatar billede tdaugaard Nybegynder
14. november 2000 - 23:40 #14
så virker det kan jeg regne ud ? det var fint!
Avatar billede sp Nybegynder
14. november 2000 - 23:43 #15
Jeps takker... Jeg er vist lidt træt siden jeg skriver \'om igen\' et par gange;-)

Søren
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester