Avatar billede encory Nybegynder
17. marts 2004 - 21:31 Der er 12 kommentarer og
1 løsning

Generere en ny streng fra streng med indlejret formateringsdata

Hej eksperter...
er der en der kan lave en funktion der kan tage en streng og danne en ny streng af indholdet på følgende måde.

original_streng = "Dette er en streng#delt i to med havelåge og ¤className|stylet med stylesheetclass¤.#og ellers plain-tekst.";

skulle med funktionens hjælp blive til

Dette er en streng<br />delt i to med havelåge og <span class='className'>stylet med stylesheetclass.></span><br />og ellers plain-tekst.

Kan dette overhovedet lade sig gøre... ???
Avatar billede nute Nybegynder
17. marts 2004 - 21:49 #1
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
original_streng = "Dette er en streng#delt i to med havelåge og ¤className|stylet med stylesheetclass¤.#og ellers plain-tekst.";
var strResult = "";

// finder hvert linieskift:
var arrLines = original_streng.split( "#" );
for( i = 0; i < arrLines.length; i++ )
{
   
    var objRegExp = /¤(className)\|(.*)¤/gi;
    strResult += arrLines[i].replace( objRegExp, "<span=\"$1\">$2</span>" );
    if( i < arrLines.length - 1)
    {
        strResult += "<br/>"
    }
}
alert( strResult );
//-->
</SCRIPT>
Avatar billede nute Nybegynder
17. marts 2004 - 21:53 #2
nja ... det kan da laves pænere ...

<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
<!--
original_streng = "Dette er en streng#delt i to med havelåge og ¤className|stylet med stylesheetclass¤.#og ellers plain-tekst.";
alert( formatString( original_streng ) );
function formatString( strString )
{
    var objBreakRegExp = /#/gi;
    strString = strString.replace( objBreakRegExp, "<br/>" );
    var objSpanRegExp = /¤(className)\|(.*)¤/gi;
    strString = strString.replace( objSpanRegExp, "<span=\"$1\">$2</span>" );
    return strString;
}
//-->
</SCRIPT>

/nute
Avatar billede encory Nybegynder
17. marts 2004 - 22:34 #3
i ren html ser det godt ud... men når man kører det over Jboss app server og benytter jsp kan den ikke helt finde ud af det....
Resultat:

€highlighted|Peter&
8209;Moss€
Hansen

blev resultatet.. havde regnet med
peter-moss
Hansen

hvor Peter-Moss var stylet ???

har du nogle forslag til hvorfor det ender sådan...
Avatar billede nute Nybegynder
17. marts 2004 - 22:57 #4
du siger at når du kører det på en html side, så fungerer det, men når du kører på en jsp side så fungerer det ikke ?
Avatar billede encory Nybegynder
17. marts 2004 - 22:59 #5
ja.... så laver den de der underlige tegn...
Avatar billede encory Nybegynder
17. marts 2004 - 23:43 #6
JEg ved ikke om det er tegnsættet den er gal med... det lyder sandsynligt... eftersom den roder rundt i tegnene... De underlige er at hvis jeg ikke benytter replace funktionen er der ingen problemer...
Avatar billede olebole Juniormester
18. marts 2004 - 00:58 #7
<ole>

Det er i hvert fald forkert JavaScript - og mon ikke osse, det er forkert Java?  :)

Når man bruger specialtegn i JavaScript (og det gælder f.eks. også 'æ', 'ø' og 'å'), skal man bruge den escapede oktalværdi til tegnets keyCode.
Eksempel:
  alert( "\345l, \370l og r\370r\346g" );

Jeg skrev engang en lille konverter, der kan hentes her:
  http://tjenester.dk/x-codes.dk/eksperten/oktal_konverter/

/mvh
</bole>
Avatar billede nute Nybegynder
18. marts 2004 - 10:07 #8
olebole >> "forkert" kan man jo diskutere om det er ... at javascriptet ikke er tiltrækkelig til formålet, er jo en anden ting. "Mangelfuld" eller "utrolig dårlig kvalitet" kan jeg bedre lide ;-) (( Det er hvertfald noget konkret jeg kan forholde mig til )). Med mindre du vil påpege nogle andre ting med scriptet som er helt hen i vejret.

hvad med denne så ... er den også "forkert" ?

original_streng = "Dette er en streng#delt i to med havelåge og ¤className|stylet med stylesheetclass¤.#og ellers plain-tekst.";
alert( formatString( original_streng ) );
function formatString( strString )
{
    var objBreakRegExp = /\43/gi;
    strString = strString.replace( objBreakRegExp, "<br/>" );
    var objSpanRegExp = /\244(className)\174(.*)\244/gi;
    strString = strString.replace( objSpanRegExp, "<span=\"$1\">$2</span>" );
    return strString;
}

/nute
Avatar billede olebole Juniormester
18. marts 2004 - 12:22 #9
I følge Netscape - som jo er dem, der vedligeholder JavaScript (på baggrund af ECMA) - er det et 'must' at man skriver specialtegn på denne måde. Så jeg tillader mig at betragte det som forkert ikke at gøre det  :)
Man kan vist nok også skrive noget ASCII-kode i stedet. Jeg sidder lige med noget andet nu, men jeg skal checke det lidt senere  ;o)

Ja, det eksempel er også forkert - specialtegnene bør også skrives med oktal-værdier i strengen.
At specialtegn så virker i mange tilfælde, er en anden ting - men vil man altid undgå problemer, bør man følge standarden  :)
/mvh
Avatar billede encory Nybegynder
18. marts 2004 - 12:36 #10
Er der en måde at løse det på så det kommer til at virke.. kan man evt. lave oktal funktionen og køre den genererede eller original strengen igennem den ????
Avatar billede nute Nybegynder
18. marts 2004 - 12:40 #11
olebole >> grr ... men ok ... din betragtning er godkendt :o] ... om jeg er enig, er jo en anden sag ;o]
Avatar billede encory Nybegynder
18. marts 2004 - 15:43 #12
Kan problemet løses.. ????
Avatar billede encory Nybegynder
15. juni 2004 - 08:53 #13
Åbenbart ikke! :o(
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