Avatar billede mik28 Seniormester
01. december 2010 - 10:14 Der er 21 kommentarer og
1 løsning

Fjern tags

Hejsa

Hvis jeg har en String som f.x ser således ud

String test = "<div>blablabla</div>";

Hvordan får jeg så smartest fjernet tags. Det jeg i princippet ved er at alt som står i <> skal fjernes. Så jeg kan ikke umiddelbart lave en replaceall uden det bliver noget rod da det også kan være <p> og <span>
Avatar billede mcb2001 Nybegynder
01. december 2010 - 10:33 #1
du skal bruge regular expressions.

http://download.oracle.com/javase/tutorial/essential/regex/


Men hvis det er javascript og ikke java du leder efter en løsning i, så skal du lægge spørgsmålet under det forum istedet.
Avatar billede mik28 Seniormester
01. december 2010 - 10:53 #2
det er JAVA
Avatar billede mik28 Seniormester
01. december 2010 - 11:31 #3
Det kan jeg ikke lige gennemskue. Hvordan laver jeg et regex som laver

"<div><div>jhhuyctyctytytytyctytyc</div></div>" om til "<div>jhhuyctyctytytytyctytyc</div>"

og

"<p><div>jhhuyctyctytytytyctytyc</div></p>" om til "<div>jhhuyctyctytytytyctytyc</div>"

altså skal det fjerne det yderste tag i Stingen
Avatar billede mcb2001 Nybegynder
01. december 2010 - 12:05 #4
under forudsætning af at det er
<SOMETHING> <SOMETHING_ELSE> TEKST_OG_TAL </SOMETHING_ELSE> </SOMETHING>
du skal lave om til:
<SOMETHING_ELSE> TEKST_OG_TAL </SOMETHING_ELSE>

Først finder du hele udtrykket:

String regexMatch = "<[a-zA-Z0-9]+><[a-zA-Z0-9]+>[a-zA-Z0-9]+</[a-zA-Z0-9]+></[a-zA-Z0-9]+>";

i denne skal du så finde:
String regexMatchSub = "<[a-zA-Z0-9]+>[a-zA-Z0-9]+</[a-zA-Z0-9]+>"

og så bruge det match den finder.


Hvis du skal have mere end blot tal og bogstaver i mellem dine tags, så skal den midterste del ([a-zA-Z0-9]+) udvides med den/de tegn du også forventer. (så som !?_.,:; osv.)
Avatar billede mik28 Seniormester
01. december 2010 - 14:02 #5
Hmmmmm. Det fatter jeg hat af
Avatar billede mik28 Seniormester
01. december 2010 - 14:30 #6
Gider du vise mig hvordan det skal se ud
Avatar billede mcb2001 Nybegynder
01. december 2010 - 15:00 #7
har du læst den tutorial jeg har henvist til?
Avatar billede mik28 Seniormester
01. december 2010 - 15:07 #8
Ja
Avatar billede mik28 Seniormester
01. december 2010 - 15:15 #9
Desværre forstår jeg det ikke.
Avatar billede arne_v Ekspert
01. december 2010 - 15:22 #10
String replaceAll understoetter regex, saa det er formentligt saa simpelt som:

s = s.replaceAll("<[^>]*>", "");
Avatar billede mik28 Seniormester
01. december 2010 - 15:59 #11
Det er ikke helt nok for den fjerner jo alle tags :-) Jeg er "kun" interesseret i at fjerne det første og sidste
Avatar billede mik28 Seniormester
01. december 2010 - 16:00 #12
hov sorry. Det er jo ikke korrekt. Jeg forstår det bare ikke, men det virker. Tak for hjælpen
Avatar billede mik28 Seniormester
01. december 2010 - 16:07 #13
du er for vild arne_v
Avatar billede arne_v Ekspert
01. december 2010 - 16:27 #14
Nej. Den replaceAll boer fjerne alle tags som i spoergsmaalet. problemet i #3 er lidt mere tricky.
Avatar billede arne_v Ekspert
01. december 2010 - 16:27 #15
maaske:

s = s.replaceAll("(^<[^>]*>)|(<[^>]*>$)", "");
Avatar billede mik28 Seniormester
03. december 2010 - 14:19 #16
Det sidste virkede ikke :-(
Avatar billede arne_v Ekspert
03. december 2010 - 17:18 #17
public class Strip {
    public static void test(String s) {
        System.out.println(s);
        System.out.println(s.replaceAll("<[^>]*>", ""));
        System.out.println(s.replaceAll("(^<[^>]*>)|(<[^>]*>$)", ""));
    }
    public static void main(String[] args) {
        test("<a><b>xxx</b><c>yyy</c></a>");
    }
}

outputs:

<a><b>xxx</b><c>yyy</c></a>
xxxyyy
<b>xxx</b><c>yyy</c>
Avatar billede mik28 Seniormester
06. december 2010 - 14:51 #18
Det er lidt funky.

System.out.println(s.replaceAll("<[^>]*>", ""));

giver mig

<b>xxx</b><c>yyy</c>
Avatar billede arne_v Ekspert
07. december 2010 - 02:43 #19
Men det virker ikke i din kode??
Avatar billede arne_v Ekspert
27. december 2010 - 00:14 #20
Tid at få afsluttet her?
Avatar billede mik28 Seniormester
04. januar 2011 - 13:30 #21
Ja det er. Læg gerne et svar
Avatar billede arne_v Ekspert
04. januar 2011 - 21:07 #22
ok
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

IT-JOB

Politiets Efterretningstjeneste

Softwareudvikler til PET

Metroselskabet og Hovedstadens Letbane

Data Engineer at Metroselskabet

Patent- og Varemærkestyrelsen

Softwareudvikler

Epona A/S

Senior Developer