Vyfiltrovanie cast Stringu v Java

Programovacie jazyky, rady, poradňa...
MarkMarusin
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 135
Registrovaný: 30 apr 2011, 13:42

Vyfiltrovanie cast Stringu v Java

Príspevok od používateľa MarkMarusin »

Zdravicko

Naprogramoval som appku pre android ktora sa pripaja na isty free hosting. Ked taham data zo servera - primam String ktory sa potom snazim rozobrat. Problem je ze do Stringu mi obcas zamiesa daku reklamu. Raz to spravy na zaciatku, inokedy v strede atd. A ja potrebujem tuto reklamu z tohto stringu vyfiltrovat.

Reklama je v tvare

<a id="dake_id" href="http://www.vzdy_ina_domena.cz/spr">spr</a> - prisom reklamu mi zamiesalo do casti slova "spristupnit" a keby
som ju vyfiltroval celu tak mi odsekne aj cast slova spristupnit (odsekne spr a slovo budu uz len istupnit)

Cize najidealnejsie riesenie by bolo keby ste mi poradili napisat Java kod ktory vyfilture cast stringu od znaku < po znak >
Dik
Pnr
Light Star
Light Star
Používateľov profilový obrázok
Príspevky: 295
Registrovaný: 04 aug 2012, 17:34
Bydlisko: BA/KE

Re: Vyfiltrovanie cast Stringu v Java

Príspevok od používateľa Pnr »

String ma metodu indexOf() tak pomocou toho by si mohol spravit nejaky substring.
xadman
Medium Star
Medium Star
Príspevky: 305
Registrovaný: 09 mar 2011, 17:02

Re: Vyfiltrovanie cast Stringu v Java

Príspevok od používateľa xadman »

asi najvhodnejšie to bude replacnut cez regexp

niečo takéto
str = str.replaceAll("<a id="(.*?)" href="(.*?)">(.*?)</a>", "");

neviem, či to bude fungovať, v regexpe som začiatočník
ChallengerQo
Expert
Expert
Používateľov profilový obrázok
Príspevky: 183
Registrovaný: 05 júl 2009, 17:08
Bydlisko: Kodaň

Re: Vyfiltrovanie cast Stringu v Java

Príspevok od používateľa ChallengerQo »

mne funguje toto:

Kód: Vybrať všetko

		String withAd= "<a id=\"dake_id\" href=\"http://www.vzdy_ina_domena.cz/spr\">spr</a>istupnit";
		String withoutAd = withAd.replaceAll("<a.*>(.*)</a>(.*)", "$1$2");
		System.out.println(withoutAd);
neviem, či je to presne to, čo potrebuješ, ale tento kód vyselektuje všetko vnútri a za <a> tagom a vypíše to bez toho.. ak potrebuješ aj znaky predtým, tak sa to dá upraviť takto

Kód: Vybrať všetko

String withoutAd = withAd.replaceAll("(.*)<a.*>(.*)</a>(.*)", "$1$2$3");
pcsiete
Medium Star
Medium Star
Príspevky: 413
Registrovaný: 07 dec 2012, 18:47

Re: Vyfiltrovanie cast Stringu v Java

Príspevok od používateľa pcsiete »

Kód: Vybrať všetko

String withAd= "<a id=\"dake_id\" href=\"http://www.vzdy_ina_domena.cz/spr\">spr</a>istupnit";
String withoutAd = withAd.replaceAll("<a.*>(.*)</a>(.*)", "$1$2");
Nevymaže toto všetky elementy <a>?
ChallengerQo
Expert
Expert
Používateľov profilový obrázok
Príspevky: 183
Registrovaný: 05 júl 2009, 17:08
Bydlisko: Kodaň

Re: Vyfiltrovanie cast Stringu v Java

Príspevok od používateľa ChallengerQo »

pcsiete napísal:

Kód: Vybrať všetko

String withAd= "<a id=\"dake_id\" href=\"http://www.vzdy_ina_domena.cz/spr\">spr</a>istupnit";
String withoutAd = withAd.replaceAll("<a.*>(.*)</a>(.*)", "$1$2");
Nevymaže toto všetky elementy <a>?
No z tohto " Problem je ze do Stringu mi obcas zamiesa daku reklamu." podľa mňa vyplýva, že mu presne o to ide. Pokiaľ tam má nejaké ďalšie <a> tagy, tak ich musí nejak odlíšiť od reklamy a to sa dá spraviť tiež v tom regexpe.
MarkMarusin
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 135
Registrovaný: 30 apr 2011, 13:42

Re: Vyfiltrovanie cast Stringu v Java

Príspevok od používateľa MarkMarusin »

Dakujem vam pani, nasiel som si medzi odpovedami tu spravnu ktora mi funguje :D
Napísať odpoveď