Avatar billede jcj Nybegynder
24. september 2001 - 09:38 Der er 15 kommentarer og
1 løsning

Linieskift i tekst fra memo felt

JSP/Ultradev begynder har brug for lidt hjælp...
Jeg henter en bunke tekst fra et memo/text felt. Det bliver (naturligvis) klasket op på html siden i én lang køre.

Jeg ville være forfærdelig gæad hvis nogen kunne fortælle mig hvad jeg skal skrive for at erstatte de usynlige linieskift med <BR>. Mit udgangspunkt er følgende linie:

<%=(((Recordset_data = Recordset.getString(\"Table\"))==null
|| Recordset.wasNull())?\"\":Recordset_data)%>

Tak for opmærksomheden :O)
Avatar billede disky Nybegynder
24. september 2001 - 09:41 #1
søg og erstat \'\\n\' med \'<br>\'
Avatar billede disky Nybegynder
24. september 2001 - 09:43 #2
Denne metode gør det.

Aner ikke hvor jeg har den fra men den virker :)

Kan dog sikkert gøres pænere.

Men kig på den

    public static String nl2br(String in)
    {
        StringBuffer out=new StringBuffer(in);
        int len=in.length();
        for(int x=0;x<len;x++)
        {
            if(out.charAt(x)==textCRLF)
            {
                out.replace(x,x+1,htmlCRLF);
                x+=4;
            }
        }
        return out.toString();
    }
Avatar billede jcj Nybegynder
24. september 2001 - 09:45 #3
Hej Disky
Ja, det havde jeg jo lidt på fornemmelsen :o)
Men jeg må tilstå at jeg ikke aner hvordan. Ultradev skriver det meste kode for mig og jeg har endnu ikke set nok på det, til at jeg selv kan tage over.
Kunne du give mig lidt mere specifik vejledning?
Tak.
Avatar billede jcj Nybegynder
24. september 2001 - 09:46 #4
Hov du var hurtigere end mig.
Mange tak, jeg vil straks prøve det.
Avatar billede disky Nybegynder
24. september 2001 - 09:47 #5
hov lille detalje

brug

    public static String nl2br(String in)
    {
        StringBuffer out=new StringBuffer(in);
        int len=in.length();
        for(int x=0;x<len;x++)
        {
            if(out.charAt(x)==13)
            {
                out.replace(x,x+1,\"<br>);
                x+=4;
            }
        }
        return out.toString();
    }

Avatar billede disky Nybegynder
24. september 2001 - 09:47 #6
eller sæt disse 2 linier ind før metoden

    final static char textCRLF=\'\\n\';
    final static String htmlCRLF=\"<br>\";
Avatar billede jcj Nybegynder
24. september 2001 - 09:58 #7
Hej Disky
Mange tak for dine hurtige svar. Jeg er overbevist om at det virker og er ret simpelt.
Men jeg håber du kan bære over med mig ...jeg bliver nød til at spørge dumt. Jeg har kigget på din kode men aner ærlig talt ikke hvor jeg skal gøre af den og hvad jeg evt. skal skifte ud.

Mit udgangspunkt er som sagt:

<%=(((Recordset_data = Recordset.getString(\"Table\"))==null||
Recordset.wasNull())?\"\":Recordset_data)%>

Hvad og hvor skal jeg skrive?
Avatar billede disky Nybegynder
24. september 2001 - 10:04 #8
Noget i denne retning skulle kunne gøre det.

Jeg gætter på din Recordset_data er en String og den er defineret i forvejen.


<%
Recordset_data = Recordset.getString(\"Table\");
if(Recordset_data!=null)
{
  StringBuffer out=new StringBuffer(Recordset_data);
  int len=in.length();
  for(int x=0;x<len;x++)
  {
      if(out.charAt(x)==13)
      {
          out.replace(x,x+1,\"<br>);
          x+=4;
      }
  }
  Recordset_data=out.toString();
}
else
{
  Recordset_data=\"\";
}
%><%=Recordset_data%>
Avatar billede jcj Nybegynder
24. september 2001 - 10:36 #9
hej igen
Med ovenstående kode får jeg en række Internal Servlet errors.
Den første er: Variable \'out\' is already defined in this method: StringBuffer out=new StringBuffer(Recordset_data);

Jeg er lidt luren mht. om Recordset_data er defineret korrekt i mit dokument. \"Recordset\" er navnet på mit, ja... recordset. \"Recordset_data\" er Ultradevs måde at arbejde med tingene. I toppen af dokumentet står der: \"Object Recordset_data;\"

Mange hilsener
JCJ
Avatar billede disky Nybegynder
24. september 2001 - 10:54 #10
Prøv med denne her:

<%
String text = Recordset.getString(\"Table\");
if(text!=null)
{
  StringBuffer buf=new StringBuffer(text);
  int len=in.length();
  for(int x=0;x<len;x++)
  {
      if(buf.charAt(x)==13)
      {
          buf.replace(x,x+1,\"<br>);
          x+=4;
      }
  }
  text=buf.toString();
}
else
{
  text=\"\";
}
%><%=text%>




p.s. Ultraedit kan være et mareridt at arbejde med
Avatar billede jcj Nybegynder
24. september 2001 - 11:03 #11
Jeg tror (håber) vi er ved at være der. Jeg har indsat \" efter <br>. Nu får jeg 2 andre fejl:

Undefined variable or class name: in     
int len=in.length();
                                               
Method replace(int, int, java.lang.String) not found in class java.lang.StringBuffer.          buf.replace(x,x+1,\"\");
               
Jeg ved godt at Ultradev laver noget rod, men det er vist min eneste mulighed for at komme igang med det her forholdsvist hurtigt.                                           
Avatar billede disky Nybegynder
24. september 2001 - 11:07 #12
int len=text.length(); //sorry about that :)

At replace ikke findes skyldes din JDK er for gammel, replace har været med siden jdk1.2 ifølge API\'en

hov taste fejl

skriv

buf.replace(x,x+1,\"<br>\");

istedet der manglede en \"
         

Avatar billede jcj Nybegynder
24. september 2001 - 14:44 #13
Jeg har store forventninger om at det virker nu, men jeg må desværre vente på at der bliver installeret en ny JDK på serveren (det er jeg ikke selv herre over). Jeg vender tilbage når det er prøvet.
:o)
Avatar billede disky Nybegynder
24. september 2001 - 14:47 #14
hvis det ikke virker sig til, jeg har en metode der ikke bruger replace, den kan jeg bare ikke \'nå\' herfra.

Forresten hvis i kører en JDK ældre end 1.2 så er den MEGET gammel, langsom, og har mange fejl.

Så prik evt. til den ansvarlige. :)
Avatar billede jcj Nybegynder
28. september 2001 - 12:48 #15
Så lykkedes det omsider at få en nyere JDK på plads
og.... DET VIRKER med din kode. Tusind mange tak!

:o) glade tanker
Avatar billede disky Nybegynder
28. september 2001 - 14:03 #16
det var skam så lidt :)
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