2017-11-28 4 views
0

UPDATE (Bitte unten zuerst Kontext lesen)Streifen unerwünschte Tags aus dem Dokument

Ich habe, wie herausgefunden, das Problem unten zu beheben, indem simplying replaceAll zweimal an den beiden unterschiedlichen Tags aufrufen, aber jetzt begegne ich ein anderes Tag Ausgabe:

Turn right onto Waialae Ave<div style="font-size:0.9em">Destination will be on the left</div> 

ich will nicht nur Sonderfälle machen, so dass das Programm alle Formatierungs-Tags nicht spezifisch nur auf die fett und Style-Tags entfernen können. Gibt es also eine Möglichkeit für mein Programm, das < Symbol zu erkennen und alles darin enthaltene inklusive des Symbols bis zum Endsymbol> zu entfernen? Das wäre sehr hilfreich.


Ich arbeite an der Verwendung der Google Maps API, um Informationen für den Benutzer bereitzustellen; aber wenn sie dies tun, druckt er die fett Formatierungs-Tags, wie unten dargestellt:

Head <b>northwest</b> toward <b>Kalaniiki St</b> 

Ich versuche, diese zu Streifen durch die replaceAll Methode:

String instructions = eElement.getElementsByTagName("html_instructions").item(0).getTextContent().toString(); 
instructions = instructions.replaceAll("[^A-Za-z0-9]", " "); 

jedoch nur diese los wird die < und> Symbole und nicht das Zeichen b. Wie würde ich die Formatierung der replaceAll-Methode ändern, damit die fettgedruckten Tags entfernt werden? Lass es mich wissen, bitte.

Vielen Dank!

+0

Wie wäre es mit etwas wie JSoup zu parsen/die Textdarstellung zu bekommen? https://jsoup.org/cookbook/input/parse-document-from-string. Stellt die API alternativ eine Möglichkeit zur Verfügung, um reinen Text anstelle von HTML zu erhalten? –

+0

Das sollte es tun: 'String.replace (" "," ") .replace (" "," ");' oder sogar 'String.replaceAll (" <.+?> "," ");' die am meisten entfernen sollte HTML-Tags – DevilsHnd

+0

Danke! Das hat den Trick gemacht. – Dylan

Antwort

0

Sie könnten versuchen, eine Regex zu verwenden, um öffnende und schließende Tags zu erfassen und sie durch eine leere Zeichenfolge zu ersetzen.

0

Ich kenne keine plausible Möglichkeit, dies nur mit der str.replaceAll() Methode zu tun. Ich werde updaten, wenn ich etwas erfinde, das nur das nutzt.

Der Code unten funktioniert nach läuft die str.replaceAll() Es wird den restlichen Text in HTML-Tags greifen. Der Grund, warum Sie immer noch brauchen str.replaceAll() ist, Dinge wie &nbsp usw. loszuwerden ... Ich habe am Anfang ein Leerzeichen hinzugefügt, dies wird verhindern, dass Wörter kombiniert werden. Dieser Abstand muss später je nach Spezifikationen angepasst werden.

do{ 
    str += (" " + (str.substring(str.indexOf(">") + 1, str.indexOf("<")); 
} while(str.indexOf("<") != -1); 
Verwandte Themen