Avatar billede per1291 Nybegynder
20. august 2005 - 18:08 Der er 12 kommentarer og
1 løsning

Hvilke tegn er specialtegn i en string ?

Med et specialtegn mener jeg i denne forbindelse et tegn, som skal behandles på en anden måde end f.eks. bogstaver, når man anbringer det imellem to citationstegn.

Eksempel: Citationstegn ...
Hvis jeg i Javascript vil have en string S til at indeholde denne tekst:
Manden sagde: "Dav med dig!" - og bukkede.
... så må jeg skrive:
S="Manden sagde: \"Dav med dig!\" - og bukkede.";

Jeg har defineret mit tegnsæt vha.
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
Jeg ved ikke præcis hvilken indflydelse denne defintion har på de tegn, jeg benytter i mine tekststrenge.

Jeg søger ikke en liste over specialtegn.
Jeg søger derimod en lille test, som kan fortælle mig om et tegn er et specialtegn eller ej.

Har forsøgt med dette:

var specialtegn=false;
if (escape(ch).length > 1) {specialtegn=true};

Men den metode giver flere specialtegn end nødvendigt.

Hilsen Per
Avatar billede roenving Novice
20. august 2005 - 18:13 #1
Der er nu heller ikke så mange !-)

-- såvidt jeg ved er der kun \ (backslash) og så det tegn, strengen er termineret med, altså enten gåseøjne eller apostroffer ...

-- til gengæld kan du gøre mange andre tegn til special-tegn ved at sætte en backslash foran !o]
Avatar billede Slettet bruger
20. august 2005 - 18:21 #2
$ er også
Avatar billede Slettet bruger
20. august 2005 - 18:22 #3
fandens.. Troede jeg var i PHP kategorien :/
Avatar billede per1291 Nybegynder
20. august 2005 - 18:48 #4
wizec -> du er tilgivet...
roenving -> Er det virkelig sandt? Jeg husker, at du i nogle koder har erstattet æ,ø,å med slash + et tal. - Hilsen Per
Avatar billede roenving Novice
20. august 2005 - 18:54 #5
æøå er ikke special-tegn, ligesom f.eks. ¿ eller $ heller ikke er ...

-- men i nogle kodetabeller er der nogen tegn, som ikke er med, og så kan man forsøge at komme om ved det ved at skrive den escapede oktal-værdi, f.eks. hvis fortolkeren sidder i en engelsk-sproget browser !-)

-- noget andet er, hvis en ting skal bruges som javascript identifier, for så er der rigtig mange spacialtegn, dvs. ugyldige tegn !o]
Avatar billede per1291 Nybegynder
20. august 2005 - 19:53 #6
Okay roenving, jeg stoler foreløbig på at der kun findes 2 relevante specialtegn.
Men husk lige, det hele foregår i Javascript.

Hvis min tekststreng f.eks. behandles sådan her:
S="<div>Dette er en DIV!</div>"
... så vil HTML-validatoren på www.w3schools.com fortælle, at der er en syntaksfejl, idet en ikke-åben div søges lukket.

Det tyder i mine øjne på, at en korrekt programmeret browser også burde reagere med en fejlmelding. Af den grund har jeg på fornemmelsen, at man nok burde erstatte tegnfølgen </ med <\/ ... - Hilsen Per
Avatar billede roenving Novice
20. august 2005 - 21:45 #7
Det har jo ikke noget med javascript at gøre !o]

-- det er jo html-fortolkeren (her -validatoren !-), som kløjs i det ...

-- et andet klassisk eksempel er det, hvor du vil skrive en masse html-kode til en javascript-variabel, javascript har ingen problemer med html-koden i variablen, men den når aldrig til selvstændigt at fortolke skidtet, fordi html-fortolkeren ikke kan se, at indholdet ligger i en javascript-variabel, og den derfor skal lade være med at parse indholdet ...

Et eksempel (først det, du ikke skal bruge !-)

<script type="text/javascript">
var txt = "Her vil vi godt have en javascript-udskrevet variabel: <script type='text/javascript'>var minTxt = 'Hej';document.write(minTxt);</script>";
document.write(txt);
</script>

-- html-fortolkeren vil simpelthen ikke vide, at javascript tekst-variablen er aktiv, og derfor lave en fejl !-)

Hvis du i stedet skriver dette, er det ikke svært at indse, at variablen txt indeholder præcis det samme, men html-fortolkeren kommer ikke indover først:

<script type="text/javascript">
var txt = "Her vil vi godt have en javascript-udskrevet variabel: <scr";
txt += "ipt type='text/javascript'>var minTxt = 'Hej';document.write(minTxt);</scr";
txt += "ipt>";
document.write(txt);
</script>
Avatar billede per1291 Nybegynder
20. august 2005 - 22:08 #8
Jeg forstår godt hvad du siger. Og jeg tror egentlig også at jeg slipper for HTML-validatorens fejlmelding hvis jeg laver mine javascripts sådan:

<script type="text/javascript">
<!--
[diverse kode]
-->
</script>

Lige nu arbejder jeg med at oversætte en inputvariabel fra et textarea til en string, som derpå flyttes over i en div. Det viser sig at tegnet \ (backslash) ikke er noget problem. Et citationstegn kan jeg tage højde for ved at ændre til \" (nemlig fordi min tekstvariabel er omklamret af sådanne citationstegn). Men der er problemer med tegnet < ... det fortolkes i visse sammenhænge som starten på et TAG.

Nå, men jeg har vist taget nok af din tid. Jeg er på vej til en løsning. 30 point til dig. - Hilsen Per
Avatar billede roenving Novice
20. august 2005 - 22:26 #9
Som det indirekte fremgår af mit foregående indlæg, og direkte af dit @19:53:22, er det næppe <-tegnet, men html-lukketags, som kan give problemet:

<script type="text/javascript">
var txt = "Her vil vi godt have en javascript-udskrevet variabel: <script type='text/javascript'>var minTxt = 'Hej';document.write(minTxt);<\/script>";
document.write(txt);
</script>

-- virker jo ganske uden problemer !-)

-- els velbekomme '-)
Avatar billede roenving Novice
20. august 2005 - 22:52 #10
-- og tak for point ;~}
Avatar billede olebole Juniormester
20. august 2005 - 23:12 #11
<ole>

Jamen, Jes - mener du HTML-fortolkeren går ned i en remote JS-fil og kontrollerer, at der ikke står: document.write("<script>");?

Med al respekt, så er jeg temmelig sikker på, du tager fejl i dette tilfælde  :)

/mvh
</bole>
Avatar billede roenving Novice
20. august 2005 - 23:27 #12
Øeh, whaddd ?-)

Jeg er ret sikker på, at html-fortolkeren tygger den kode, som står i en html-fil byte for byte (eller dobbelt-byte, hvis mime-typen angiver det !-), så når den finder et lukketag, så reagerer den som om, der står et html-lukketag uanset om det forekommer inde i en javascript-variabel ...

-- i nogle tilfælde giver det ikke mening, hvilket også ses af, at du sjældent har problemer med andre lukketags end </script> i inline scripts, som forekommer i head-sektionen ...

-- jeg mener dog at have oplevet problemer med inline-scripts udenfor head, men kan ik' li'e huske hvor jeg skal kigge, for at finde det !-)

-- og en hurtig test viser, at hvis html-fortolkeren slet ikke er blandet ind i billedet kan du skrive lige hvad det skal være af html-lukketags i en javascript-variabel i et eksternt script !o]

PS. Vi havde her kun fat i inline scipts, så remote scripts var såvidt jeg registrerede ikke på banen ?o]
Avatar billede per1291 Nybegynder
21. august 2005 - 12:10 #13
For de interesserede:
Jeg har i samme forbindelse haft et problem med at flytte en indtastet tekststreng fra et textarea til en div et andet sted på skærmen. Der skete sjove ting når tekststrengen indeholdt tegnet "<".

Min løsning er denne:
"<" erstattes med "<<q></q>". - Hilsen Per
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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