Witam
Poszukuję funkcji, która wyszuka w String'u oddzielne słowo, nie frazę.
Funkcja AnsiPos wyszukuje frazę.
Pzdr
Witam
Poszukuję funkcji, która wyszuka w String'u oddzielne słowo, nie frazę.
Funkcja AnsiPos wyszukuje frazę.
Pzdr
a nie wystarczy coś w stylu:
i := AnsiPos(' ' + slowo + ' ', ' ' + zdanie + ' ') - 1;
??
Wil, jak nie masz nic do powiedzenia to lepiej nie pisz.
Adamo, powinno wystarczyć :), napisałem taką funkcję, ale w bardziej skomplikowany sposób. Twój pomysł jest zdecydowanie lepszy.
Pzdr
To zadziała pod warunkiem, że nie masz takich bajerów jak koniec linii, tabulacja itp. Bo trzebaby wcześniej wszystkie whitespace'y zamienić na spacje.
Jeżeli funkcji AnsiPos jako parametr do przeszukania podam string zawiarający znaki końca linii czy zostanie on przeszukany w całości czy tylko 1-sza linia ?
Co do zamiany:
const TOld: array[0..2] of String = (#13, #10, #9);
for i := Low(TOld) to High(TOld) do
S := StringReplace(S, TOld[i], ' ', [rfReplaceAll]);
Czy pominąłem jakiś znak ??
a nie prościej tak
i := AnsiPos(slowo, zdanie);
a potem sprawdzić co jest z lewej i prawej strony słowa? Jeśli to edytor to nie chciał bym, aby przy wyszukiwaniu zamieniło mi tab na spację, to raz a dwa co z przypadkiem np. takim:
ala,która, ma kota
tu która to też osobne słowo i też powinno zostać znalezione
Misiekd napisał(a)
a nie prościej tak
i := AnsiPos(slowo, zdanie);
a potem sprawdzić co jest z lewej i prawej strony słowa? Jeśli to edytor to nie chciał bym, aby przy wyszukiwaniu zamieniło mi tab na spację, to raz a dwa co z przypadkiem np. takim:ala,która, ma kota
tu która to też osobne słowo i też powinno zostać znalezione
Misiekd:
Wil:
co za różnica dla jakiego słowa, przecież funkcję piszesz raz a słowo podajesz w parametrze, chyba nie chcesz powiedzieć że napisałeś procedurę w stylu
if (s[i - 1] = ' ') and (s[i] = 'k') and (s[i + 1] = 'o') and (s[i + 2] = 't') then
:-|
Misiekd napisał(a)
Twój program i zrobisz jak uważasz. Ale zauważ, że wysukiwanie od danej pozycji oraz wyszukiwanie nie słów a ciągu znaków (np. kot w domkotmama) jeśli to ma byc jakiś konkretny edytor a nie zabawaka też powinien mieć. Poza tym już wiem, że Ciebie nie obchodzi ile zajmuje program w pamięci i ile wyszukuje coś w tekście ale przeciętnego usera tak. Jak będziesz miał 1MB textu i będziesz w nim po kolei zamieniał 15-20 znaków na inne (czyli robił tą zamianę 15-20 razy) to powiedz mi, gdzie tu logika i sens. A co do szukania od danego miejsca to zobacz sobie jak wyglądają źródła procedury pos i zmień ją aby szukała od konkretnego miejsca i już.
no nie mój program i nawet go na oczy nie widziałem, nigdy nie patrzysz na autora posta ? miało być po prostu "prościej" a twoje rozwiązanie na pewno nie było prostsze. Ja bym wprawdzie nigdy nie zrobił czegoś podobnego, a ogólnie staram się tylko jeśli ktoś mi płaci, albo ogólnie jeśli chcę się podpisać swoim nazwiskiem pod danym programem. Poza tym nawet jeśli to nie mogę zajrzeć w źródła procedury pos bo jest w unicie system.pas którego mam tylko skompilowanego co oznacza że jakbym go pobrał i zajrzał to by to było niezgodne z licencją wręcz nielegalne, za to można zrobić w 2 sek odpowiednią prockę, a w faqu nawet jest ona napisana ...
Adamo napisał(a)
Misiekd:
- no to kod będzie chyba trochę dłuższy, tymbardziej że jeśli słowo jednak nie ma spacji przed to będzie trzeba wznowić wyszukiwanie po tej pozycji i zrobić nową funkcję znowu na szukanie od podanej pozycji ...
- nawet jeśli to edytor to mi by nie przeszkadzało że sobie w pamięci zmieniło tab na spację :-| w ogóle to mnie nic nie obchodzi co sobie w pamięci program robi, byleby to wyświetlane zostało takie same
- no to wystarczy to posta wcześniej dodać jeszcze przecinek, kropkę, średnik i parę pierdół, ogólnie to możnaby wszystkie znaki [#0 .. #47] zamienić na spację
Twój program i zrobisz jak uważasz. Ale zauważ, że wysukiwanie od danej pozycji oraz wyszukiwanie nie słów a ciągu znaków (np. kot w domkotmama) jeśli to ma byc jakiś konkretny edytor a nie zabawaka też powinien mieć. Poza tym już wiem, że Ciebie nie obchodzi ile zajmuje program w pamięci i ile wyszukuje coś w tekście ale przeciętnego usera tak. Jak będziesz miał 1MB textu i będziesz w nim po kolei zamieniał 15-20 znaków na inne (czyli robił tą zamianę 15-20 razy) to powiedz mi, gdzie tu logika i sens. A co do szukania od danego miejsca to zobacz sobie jak wyglądają źródła procedury pos i zmień ją aby szukała od konkretnego miejsca i już.