Avatar billede janniknilsson Nybegynder
14. marts 2006 - 11:17 Der er 6 kommentarer

Find første og sidste anførelsestegn

Hvordan finder jeg første og sidste anførelses tegn i en HTML side?

Jeg skal søge gennem alt tekst på siden for at finde fx. "Hello world" og skifte det ud med “Hello world”.

Der kan godt være flere steder i teksten som skal findes og udskiftes.
Avatar billede fennec Nybegynder
14. marts 2006 - 12:40 #1
Der må du vist være mere specifik. Det kan godt laves med noget "regular expresion", men det hænger tæt sammen med din kildekode. Overvej f.eks denne kode:

<body>
"hello world"<br>
<table>
  <tr><td>"hello world"</td></tr>
</table>
<div>"hello world"</div>
</body>

Det er ikke nemt at finde alle 3 forkomster automatisk, og værre bliver det hvis vi begynder at snakke JS funktioner eller formfelter også:
<input type="button" value="hello world" onClick="alert('hello world')">
<input type="text" name="element1" value="hello world">

Men hvorfor overhoved udskifte dem??
Avatar billede hells Nybegynder
14. marts 2006 - 12:47 #2
Da jeg ikke helt ved, hvorledes det skal bruges, vil jeg starte med at vise, hvordan du kan udskifte det, du vil udskifte:
<script type="text/javascript">
str = 'En "tekst" med "mange" citations"tegn".'
document.write(str.replace(/"([a-z0-9 ,.]*)"/gi, "&ldquo;$1&rdquo;");
</script>

Hvordan det skal sættes ind i dokumentet, afhænger så af, hvor du får teksten fra og hvor du skal bruge den gennemsøgte tekst.
Avatar billede janniknilsson Nybegynder
17. marts 2006 - 15:18 #3
<script type="text/javascript">
function checkQuotes() {
    if (document.getElementById) {
        var alltags = document.all ? document.all : document.getElementsByTagName('*');
        for (i=0; i < alltags.length; i++) {
            if (alltags[i].className == 'checkQuotes') {
                var oldText = alltags[i].firstChild;
                var oldTextValue = alltags[i].firstChild.nodeValue;
                var newText = oldTextValue.replace(/"([a-z0-9 ,.]*)"/gi, "\u201C$1\u201D");
               
                var newTextValue = document.createTextNode(newText);

                alltags[i].replaceChild(newTextValue,oldText);
            }
        }
    }
}
window.onload = checkQuotes;
</script>
<div class="checkQuotes">
Hello world "Hello World" this is a hello world test "example".
</div>
Avatar billede janniknilsson Nybegynder
17. marts 2006 - 15:19 #4
<script type="text/javascript">
function checkQuotes() {
    if (document.getElementById) {
        var alltags = document.all ? document.all : document.getElementsByTagName('*');
        for (i=0; i < alltags.length; i++) {
            if (alltags[i].className == 'checkQuotes') {
                var oldText = alltags[i].firstChild;
                var oldTextValue = alltags[i].firstChild.nodeValue;
                var newText = oldTextValue.replace(/"([a-z0-9 ,.]*)"/gi, "\u201C$1\u201D");
               
                var newTextValue = document.createTextNode(newText);

                alltags[i].replaceChild(newTextValue,oldText);
            }
        }
    }
}
window.onload = checkQuotes;
</script>
<div class="checkQuotes">
Hello world "Hello World" this is a hello world test "example".
</div>
Avatar billede janniknilsson Nybegynder
17. marts 2006 - 15:20 #5
Hej Hells,

jeg kan ikke helt find ud af hvordan jeg giver dig point.

Tak for svaret det var lige hvad jeg havde brug for.
Avatar billede hells Nybegynder
17. marts 2006 - 15:22 #6
Det vil nok hjælpe, at jeg svarer.
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