Just nu i M3-nätverket
Gå till innehåll

HTML-parsing Java


DIFference

Rekommendera Poster

DIFference

När ett meddelande i ett forum läses in till sidan så vill vi att alla blankrader (\n) ska bli till <br>. Och detta funkar fint med str.replaceAll("\n", "<br>")

 

MEN vi vill att DUBBLA blankrader ska bli till <p> istället för <br><br>. Hur gör vi detta?

 

Att köra str.replaceAll("\n\n", "<p>") innan den andra funkar inte, det blir <br><br> då i alla fall.

 

Tacksam för hjälp.

 

Länk till kommentar
Dela på andra webbplatser

Att köra str.replaceAll("\n\n", "<p>") innan den andra funkar inte, det blir <br><br> då i alla fall.

Två vanliga orsaker till det där:

1. Du måste naturligtvis göra konverteringen i rätt ordning, om du först byter ut alla \n till <br> finns det ju inget kvar att byta ut till <p>.

2. Vanligtvis så är det som kommer från textarea:s radterminerat med \r\n, dvs CRLF och inte med LF. Om så är fallt så kommer du inte att hitta två \n på rad utan får upptäcka tomrader genom att leta efter \r\n\r\n.

 

Själv brukar jag använda regexpar och leta efter \r?\n (dvs 0-1 \r följt av \n).

 

 

Länk till kommentar
Dela på andra webbplatser

DIFference

Jo, det där med ordningen vet jag, experimenterade en hel del med ordningen.

 

Regexpar är bra. Ditt exempel letar efter dubbla blankrader alltså?

 

Får testa det sen på labben.

 

Tack!

 

[inlägget ändrat 2005-03-09 09:30:09 av DIFference]

Länk till kommentar
Dela på andra webbplatser

Ditt exempel letar efter dubbla blankrader alltså?

Nej, "\r?\n" betyder "en eller ingen \r följt av en \n" (alltså definitionen på ett radslut), för att leta efter två stycken letar man förslagsvis efter "\r?\n\r?\n" (eller någon elegantare konstruktion men det blir bara förvirrande för de som inte vet hur regexpar fungerar).

 

I ditt fall går det nog lika bra att göra str.repaceAll("\r\n\r\n", "<p>"), alla fungerande webbklienter kommer att skicka just det och endast någon gammal trasig Netscape för linux anno 1996 kommer att skicka "\n\n" (vilket regexpen skulle fånga upp lika bra).

 

Edit: Vad du ska leta efter blir väldigt tydligt om du t.ex sparar ner datat till fil och tittar på det med en hexeditor, då kommer du att se att det inte finns några sekvenser bestående av "\n\n".

[inlägget ändrat 2005-03-09 09:55:24 av fhe]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...