Strona 1 z 1

Ile slow występuje w komórce

: pn lip 15, 2019 12:52 pm
autor: Dawidek990
Nie wiem czy taki temat juz byl, ale nie moglem znalezc odpowiedzi.
Potrzebuje formuly ktora mi pokaze ile razy dane wyrazenie pada w komorce?
</li><li>nożyczki plastikowe</li><li>szczypce</li><li>strzykawka</li><li>termometr</li><li>otoskop</li><li>młoteczek</li><li>pudełeczko na waciki</li><li>plaster z elastycznego tworzywa</li><li>notatnik</li></ul>Ostrzeżenie: Zawiera małe części, nieodpowiednie dla dzieci poniżej 3 lat!<ul><li>Waga produktu: 381 g</li><li>Wymiary produktu: 11 x 19 x 24 cm</li><li>Zalecany wiek producenta: od 3 lat</li><li>Model: 4457</li><li>Języki: francuski, angielski, niemiecki</li><li>Model: 4457</li><li>Liczba graczy: 1</li><li>Wymagany montaż: Nie</li><li>Niezbędne baterie: Nie</li><li>Baterie w zestawie: Nie</li><li>Pilot zdalnego sterowania w zestawie: Nie</li><li>Stan:</li><li>Dostawa:</li></ul>
potrzebuje wiedziec ile razy <li> pada w tej komorce, i ile razy </li>.

Re: Ile slow występuje w komórce

: pn lip 15, 2019 3:48 pm
autor: Rafkus
Do tego celu musisz wykorzystać 2 funkcje tekstowe:
1. obliczającą długość ciągu tekstowego czyli DŁ(Tekst)
2. funkcję zamieniającą pewną frazę w danym tekście innym tekstem czyli PODSTAW(Tekst; Szukana Fraza; Nowa Fraza)

i teraz jak je wykorzystać:
- wykorzystując funkcję 1. zostanie wyliczony ile znaków ma oryginalny tekst
- wykorzystując funkcję 2. zamieniasz wszystkie wystąpienia poszukiwanej frazy pustym ciągiem np.: PODSTAW(Tekst; "li"; ""), a następnie wyliczasz ile teraz w Tekście jest znaków
- teraz musisz poznać różnicę w ilości znaków oryginalnego tekstu i zmienionego
- dzieląc obliczoną różnicę przez ilość znaków w poszukiwanej frazy otrzymasz ile razy dana fraza wystąpiła.

Załóżmy że oryginalny tekst jest w komórce A1, poszukiwaną frazę masz wpisaną w komórce A2, w A3 chcesz otrzymać wynik, czyli do tej komórki powinieneś wpisać formułę:

Kod: Zaznacz cały

=(DŁ(A1)-DŁ(PODSTAW(A1;A2;"") ) )/DŁ(A2)
lub pomijając wpisywanie poszukiwanej frazy do innej komórki:

Kod: Zaznacz cały

=(DŁ(A1)-DŁ(PODSTAW(A1;"/li";"") ) )/DŁ("/li")

Re: Ile slow występuje w komórce

: pn lip 15, 2019 4:02 pm
autor: Jermor
Rozszerzając myśl @Rafkus. W tak różnorodnym zestawie znaków może się jednak trafić zbieżność ciągu z niepożądanym miejscem. Np. "... 6 wyrazów/linijkę...". Dlatego lepiej zamieniać ciąg "<li>" i "</li>"

Re: Ile slow występuje w komórce

: pn lip 15, 2019 4:20 pm
autor: Rafkus
A i jeszcze jedno, funkcja PODSTAW rozróżnia wielkość liter czyli "li" to nie to samo co "Li", dlatego można by jeszcze rozważyć zmianę wielkości liter w tekstach stosując funkcję LITERY.WIELKIE()

Re: Ile slow występuje w komórce

: sob lip 27, 2019 11:49 pm
autor: Jan_J
Rafkus pisze:A i jeszcze jedno, funkcja PODSTAW rozróżnia wielkość liter czyli "li" to nie to samo co "Li", dlatego można by jeszcze rozważyć zmianę wielkości liter w tekstach stosując funkcję LITERY.WIELKIE()
We współczesnych wersjach HTML znaczniki są pisane małymi literami.
Czy wolno z tego faktu korzystać? to zależy skąd pochodzi kod -- czyt jest to próba sprawdzenia poprawności własnej twórczości, czy kodu otrzymanego z zewnątrz.

Tym niemniej mam wrażenie, że używamy niewłaściwego narzędzia. Do walidacji dokumentów XML napisano mnóstwo dotowego oprogramowania.
Poza tym biblioteki wyposażone w funkcję zliczającą frazy (np. metody wbudowane w typ str w Pythonie) pozwalają to zrobić prościej

Kod: Zaznacz cały

def czyTyleSamo(tekst, znacznik):
    return tekst.count("<%s>" % znacznik) == tekst.count("</%s>" % znacznik)
Ale nawet one nie gwarantują poprawności kodu. Np. tekst

Kod: Zaznacz cały

<ul><li>raz</li><li>dwa</li><li>trzy</li></ul>
jest poprawny strukturalnie (xml well-formed), podczas gdy tekst

Kod: Zaznacz cały

<ul><li>raz</li><li>dwa</li></li>trzy<li></ul>
taki nie jest, choć liczba znaczników się zgadza.

Jest taki podstawowy fakt z teorii obliczeń: zadanie poprawnego rozmieszczenia nawiasów nie da się rozwiązać za pomocą automatu skończonego. Więc chyba wybrałbym inną metodę.