String-Operationen

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Gibt es bei den String-Operationen "indexOf()" auch irgendeinen Platzhalter, wenn nicht die ganze Zeichenkette bekannt ist sondern nur der Anfang und das Ende?

Folgender String sei gegeben: "<td align='center'>Aktionen</td>"

Ich möchte den Text zwischen den tds gerne löschen, der String soll also wie folgt aussehen: "<td align='center'></td>"

Bei dem td kann es aber vorkommen, dass mehrere Attribute vorhanden sind. Ich möchte einfach alle Texte zwischen den tds löschen:

"<tr class='header'><td align='center'>Aktionen</td><td width='40' align='center'> </td><td></td><td></td><td></td><td></td><td height='80'>Test</td><td></td><td></td><td></td><td></td><td></td><td></td><td></td></tr>"
 
du kannst nach dem ersten Ersetzen bei indexOf einen Parameter angeben, dass ab Position x im String gesucht werden soll,
(x = letztes Vorkommen, musst du dir merken)

dann findest du auch weitere Vorkommen,

komfortabler wird das ganze mit Regulären Ausdrücken, ein Einzeiler
 
Einzeiler? Irgendwie denke ich wohl viel zu kompliziert.

Code:
int index = tempHeader.indexOf(">", 10);
        if (tempHeader.substring(index).startsWith("</td>")
            || tempHeader.substring(index).startsWith("</tr>"))
        {
            //TODO: ersetzen
        }

Das dann noch in eine Schleife und immer wieder schauen?
 
@Gast
dein Weg sieht nach der richtigen Richtung aus,
aber Vorsicht mit übermäßigen Einsatz von Substring,
da wird evtl. jedesmal ne ganze Menge intern gearbeitet,

in deiner Abfrage hast du 2x den gleichen Substring drin,
definiere lieber vorher eine Variable mit dem Substring und verwende diese 2x


-----------------

ich meinte
Code:
public class Test
{

    public static void main(String[] args)
        throws Exception
    {
        String eingabe = "<tr class='header'><td align='center'>Aktionen</td><td align='center'>xy </td><td";
        eingabe = eingabe.replaceAll("<td align='center'>[^<]*</td>", "<td align='center'></td>");
        System.out.println(eingabe);
    }
}

wenn du allerdings noch Spezialregeln wie
<td width='40' align='center'>
statt
"<td align='center'>
hast, dann wirds natürlich komplizierter, bleib zunächst mal lieber beim Nachbau per Hand,
da weißt du wenigstens was wann warum passiert


bzw. siehe 20mithrandir, wenn diese Regel passt
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben