Dowolny łańcuch między znacznikami

0

Jak zamienić dowolny łańcuch, o którym wiem tylko tyle, że jest między znacznikami '>' i '<' na inny?

Np: mam plik takiej treści:

<html> <body> <cos tam="tam">A oto jest tekst<cos tam="tam"><cos tam="tam">A oto kolejny tekst</html>

I jak zamienić łańcuchy "A oto jest tekst" i "A oto kolejny tekst" na jakieś inne?
Proszę zauważyć, że nie znam ani treści, ani długości tych łańcuchów.

Nie tyle chodzi o zamianę łańcucha na inny, co dodanie mu czegoś.
Ważne jest to, skąd mam wiedzieć jaki łańcuch znajduje się między znacznikami

ODPOWIEDŹ

OK, pomógł mi Dryobates.
Jakby ktoś chciał, to mówię jak to zrobić:
Przeszukać stringa całego w poszukiwaniu znaku ">", potem sprawdzić, czy następny jest różny od "<". Jeśli tak, to właśnie jest to tekst :)

0

We wczesniejszych postach jest porada, jak podzielic stringa wg jakiegos znacznika. Podziel go sobie i nastepnie posklejaj dolaczajac ten tekst.

0

We wczesniejszych postach jest porada, jak podzielic stringa wg jakiegos znacznika. Podziel go sobie i nastepnie posklejaj dolaczajac ten tekst.

Nie mogę dzielić całego stringa, bo on jest naprawdę duży. To jest jakiś plik tekstowy(np. html)

I ja muszę pozmieniać po prostu zwykły tekst(czyli PRAWIE wszystko, co jest między '>' i '<')

0

Nie mogę dzielić całego stringa, bo on jest naprawdę duży. To jest jakiś plik tekstowy(np. html)

Teoretycznie w zmiennej typu string może się zmieścić do 4GB tekstu - ten plik chyba nie jest tak duży? :P

0

Nie mogę dzielić całego stringa, bo on jest naprawdę duży. To jest jakiś plik tekstowy(np. html)

Lepiej uzyc listy stringow do tego, sybko, wygodnie...

Przeszukać stringa całego w poszukiwaniu znaku ">", potem sprawdzić, czy następny jest różny od "<". Jeśli tak, to właśnie jest to tekst

Odkrywcze to jest :) Osobiscie wpadlem na ten pomysl po kilku sekundach, przy swoim programie (mimo iz jest to proces wolny to skuteczny :D)

0

(mimo iz jest to proces wolny to skuteczny :D)

Nie taki znowu wolny. Masz do wyszukania tylko 1 znak, więc złożoność problemu jest O(n). Nie zejdziesz poniżej tej granicy. Szybciej się nie da i tyle. Wszystkie bardziej zaawansowane algorytmy dopasowywania wzorca mogą co najwyżej spowolnić wyszukiwanie. Najszybciej działałoby to gdyby odczytywać fragmenty pliku do pamięci i tam znajdować to co trzeba. Operując na fragmentach (ale najlepiej jak największych) mamy oszczędność zarówno pamięciową (po co ładować całość, jeżeli nie ma takiej potrzeby) jak i czasową (w pamięci działa szybciej niż na dysku).
Inna sprawa, że trzeba dokonywać zmian na pliku, ale to już inna bajka. Wiele się przyspieszyć nie da i tyle.

0

W sumie to masz racje, pamiec nie jest zajmowana (to co wczytane zostaje usuwane), jednakze przeszukujesz caly lancuch (przy krotkich nie am roznicy, jednakze przy duzej ilosci znakow moze byc to widoczne.
Ale lepszej i latwiejszej metody nie znam :)
(a zabawa z pos jest meczaca :))

1 użytkowników online, w tym zalogowanych: 0, gości: 1