Jestem w trakcie kodowania edytora HTML w Javie. Chcę, żeby wspierało automatyczne wcięcie. Mam zaimplementowany wzór złożony do reprezentowania obiektów znaczników HTML w aktualnie edytowanym pliku. Na przykład, kod:Manipulacja ciągiem lub funkcja rekursywna?
<table> <tr> <th>Col1</th> <th>Col2</th> </tr> <tr> <td>Data1</td> <td>Data2</td> </tr> </table>
skutkowałoby tym wzorem strukturalnym kompozytowej:
- tabeli -> tr (I), tR (sekundy)
- tr (I) -> p (Col1), th (Col2)
- tR (s) -> TD (Dane 1) TD (Dane 2)
gdzie x -> y, z oznacza, że x jest rodzicem y i z.
mam dwie możliwości:
- stworzyć funkcji rekurencyjnej, aby powrócić ciąg z wcięcia zawarte.
- Utwórz funkcję rekursywną, która po prostu zwraca niesformatowany ciąg bieżącego kodu HTML, a następnie dodaj wcięcie.
Łatwo jest zrobić pierwszy; jednak trudno jest kontynuować automatyczne wcięcie zgodnie z wzorcem wcięcia użytkownika, jeśli zmienia wzór. Z tego powodu myślę, że opcja 2 jest lepsza. Wydaje mi się, że to może być bardziej dynamiczne, jeśli mogę sprawić, że działa poprawnie. Problem polega na tym, że nie jestem całkiem pewien, jak manipulować ciągiem znaków.
Myślałem, że mogę jakoś wykorzystać stos. Mogłem wcisnąć na nie otwarty znacznik i wyjąć go, gdy jest zamknięty. Liczba tagów na stosie określałaby liczbę razy, w których potrzebuję wcięcia przed następnym znacznikiem w nowej linii. Zamiast tego mógłbym użyć liczby całkowitej, ale ta sama zasada obowiązuje. Problem polega na tym, że nie wiem, jak wykonać iterację poprzez znaczniki w łańcuchu, aby móc nim manipulować.
Czy istnieje sposób na manipulowanie ciągami w sposób opisany przeze mnie? A może lepiej skorzystać z funkcji rekursywnej?
Myślę, że najlepszą opcją jest prawdopodobnie użycie funkcji rekursywnej. Dziękuję Ci bardzo. – CouchCommando