DIFference Posted March 8, 2005 Share Posted March 8, 2005 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. Link to comment Share on other sites More sharing options...
fhe Posted March 9, 2005 Share Posted March 9, 2005 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). Link to comment Share on other sites More sharing options...
DIFference Posted March 9, 2005 Author Share Posted March 9, 2005 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] Link to comment Share on other sites More sharing options...
fhe Posted March 9, 2005 Share Posted March 9, 2005 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] Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.