---
title: "parsa html strängar"
type: "forum-thread"
url: "https://www.webforum.nu/amne/java/102437-parsa-html-strängar"
topic: "Java"
topic_url: "https://www.webforum.nu/amne/java"
author: "Mc Fetto"
published: "2004-04-27T14:05:47.000Z"
updated: "2004-04-29T10:41:12.000Z"
replies: 12
views: 384
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/java/102437-parsa-html-strängar"
---

# parsa html strängar

## #1 — Mc Fetto, 2004-04-27T14:05Z

Jag har en databas som innehåller html-taggar och text. När jag nu ska pressentera datan så vill jag bli av med html-taggarna. Finns det ngn bra färdig funktion för detta eller? 

Man kan ju gå igenom hela texterna och leta efter start och sluttaggarna och sedan ta bort taggarna efter hand. Men det borde ju redan finnas färdiga funktioner för detta!

Permalänk: https://www.webforum.nu/p/102437

## #2 — Mc Fetto, 2004-04-27T15:28Z

Löste det, men kanske inte på det effektivaste sättet. optimering är välkommen!

```
				String str = (String) result.getObject( "html" );
		
				char[] ch = str.toCharArray();				
				boolean bool = false;
				String st = "";
				for (int i = 0;i<ch.length;i++)
				{
					if (ch[i] == '<' || bool == true && ch[i] != '>')
					{
						bool = true;
						ch[i] = '<';					
					}
					else if (ch[i] == '>')
					{
						ch[i] = '<';
						bool = false;
					}	
					if (ch[i] != '<' && ch[i] != '>')
						st += ch[i];				
				}
```

Eller om det är ngn som har en bra funktion i bakfickan!

Permalänk: https://www.webforum.nu/p/1334467

## #3 — Mc Fetto, 2004-04-27T15:33Z

Märkte snabbt att den inte var så super bra...

om man har följande:

```
Foto: Filip Skala</i></TD></TR></TABLE>Nu finns
```

blir till följande:

```
Foto: Filip SkalaNu finns
```

Antagligen bara en i mängden av fel som kan uppstå...
Så frågan kvarstår... finns det ngn pareser för html att tilgå?

Permalänk: https://www.webforum.nu/p/1334471

## #4 — Peter S, 2004-04-27T15:34Z

RegExp skulle jag välja:

```
String str = "<html><head><title>foobar</title></head><body><p>foobar</p></body></html>";
	
System.out.println(str.toLowerCase().replaceAll("</?(" +
    "html|head|title|body|p"
+ ")>",""));
```

Sedan får man givetvis modifiera uttrycket för önskad formatering.

 :)

Permalänk: https://www.webforum.nu/p/1334474

## #5 — Viktor, 2004-04-27T15:47Z

Du kan köra med regexp, här är ett exempel

```
public class Test
{
	public static void main(String arg[])
	{
		String html="<html><head><title>Kalle Anka</title></head><body>This is the body</body></html>";
		html=html.replaceAll("<[^>]*>","");
		System.out.println("HTML: " +html);
	}
}
```

EDIT: Här var man inte snabb :)
Du kan byta ut "" mot " " så får du ett mellanslag mellan orden.

/Viktor

Permalänk: https://www.webforum.nu/p/1334483

## #6 — Mc Fetto, 2004-04-27T15:50Z

> **Viktor skrev:**
>
> Du kan köra med regexp, här är ett exempel
>
>
> ```
> public class Test
> {
> 	public static void main(String arg[])
> 	{
> 		String html="<html><head><title>Kalle Anka</title></head><body>This is the body</body></html>";
> 		html=html.replaceAll("<[^>]*>","");
> 		System.out.println("HTML: " +html);
> 	}
> }
> ```
>
> 
> 
> EDIT: Här var man inte snabb :)
> Du kan byta ut "" mot " " så får du ett mellanslag mellan orden.
> 
> /Viktor

En aningens enklare lösning :) , men det kvarstår att det missas mellanrum på vissa ställen, där taggarna utgör ngt slags mellanrum som t ex Table... Provade även din EDIT ;)
Problemet är att det endast är vissa taggar som skapar ett "mellanrum"!

Permalänk: https://www.webforum.nu/p/1334485

## #7 — Mc Fetto, 2004-04-27T15:53Z

Hehe, börjar bli lite trött nu tror jag... tnx peter o viktor :D

Permalänk: https://www.webforum.nu/p/1334488

## #8 — Mc Fetto, 2004-04-27T16:05Z

```
<BR><TABLE CELLPADDING=0 CELLSPACING=0 BORDER=0 WIDTH=220  align=right><TR><TD><IMG SRC=/dbimages/1013107395-777_panlak3_020206.jpg border=0 0,0 kb alt="Custemo Pantern vs. &#133;"></TD></TR><TR><TD></TD></TR><TR><TD align=right><i>Foto: Filip Skala</i></TD></TR></TABLE>xx xxxxx en lista ute där samtliga spelare finns med xxxx xxxx x xxxxxx xxxxxx under säsongen.<br />
```

Denna sträng vet jag inte hur jag ska lösa, det blir lite stora mellanrum här och var... tror denna sträng kan vara representativ för alla problemen jag har!

och då använder jag mig av följande:

```
				String str = (String) result.getObject( "html" );
				str=str.replaceAll("<[^>]*>"," ");
				str=str.replaceAll("  "," ");
```

Permalänk: https://www.webforum.nu/p/1334497

## #9 — Aleph_One, 2004-04-27T22:03Z

Du kan lägga det sista i en loop

```
str = str.trim();
int len = -1;
while(len != str.length())
{
	len = str.length();
	str=str.replaceAll("  "," ");
}
```

Borde iofs finnas effektivare sätt, men är det inga större mängder så spelar det ingen roll.

Permalänk: https://www.webforum.nu/p/1334717

## #10 — spango, 2004-04-27T23:05Z

Eftersom replaceAll tar emot en regexp kan man säga *str=str.replaceAll(" +"," ");* så byts alla efter varandra liggande mellanslag ut mot ett.

Permalänk: https://www.webforum.nu/p/1334742

## #11 — Mc Fetto, 2004-04-28T06:35Z

Tackar alla, ska nog ta och förnya mina kunskaper om reguljära uttryck!

Permalänk: https://www.webforum.nu/p/1334778

## #12 — Peter S, 2004-04-28T15:30Z

Du kan ju testa denna också:

```
import java.util.regex.*;

public class Foo {
    public static void main(String args[]) {
	String str = "...";
	Pattern p = Pattern.compile( ">[^<>]+<" );
	Matcher m = p.matcher(str);
	
	while (m.find()) {
	    String gr = m.group();
	    System.out.println( gr.substring(1, gr.length()-1) );
	}
    }
}
```

 :)

Permalänk: https://www.webforum.nu/p/1335020

## #13 — johanm, 2004-04-29T10:41Z

finns ett paket på <https://www.do.org/products/> som man kan parsa html kod med, fungerar som StreamTokenizer

Permalänk: https://www.webforum.nu/p/1335455

---

Tråden på webben: https://www.webforum.nu/amne/java/102437-parsa-html-strängar
