Witam
Chcę napisać makro które będzie odczytywało tekst z komórki i wykonywało działanie zależnie od tekstu.
Problem w tym, że w komórce źródłowej będzie kilka wyrazów, ale kilka może mieć podobny początek, lecz zmienny koniec, i nie jest to określone ostatecznie co tam będzie
Powiedzmy, że jest to:
-wyjazd
-wyjazd_szkoleniowy
-wyjazd_prywatny
celem jest makro które wszystkie teksty mające na początku słowo "wyjazd" potraktuje tak samo. Mogę zrobić IF z OR w środku, ale wtedy ograniczam się do wybranych wartości, chcąc wprowadzić coś nowego, np. wyjazd_służbowy muszę dokonać zmiany w kodzie.
Jak można zawrzeć w funkcji IF wyrażenie regularne, coś jakby If x="wyjazd*" then ....
Taki zapis mi nie działa. I nie mam pomysłu jak to zapisać w kodzie.
Proszę o jakąś podpowiedź
[SOLVED] Wyrażenie regularne w kodzie OOo-Basic
[SOLVED] Wyrażenie regularne w kodzie OOo-Basic
Ostatnio zmieniony ndz kwie 25, 2010 10:16 pm przez quest-88, łącznie zmieniany 1 raz.
Powód: Zmiana tytułu
Powód: Zmiana tytułu
Re: Wyrażenie regularne w kodzie OOo-Basic
W czystym Basicu nie ma narzędzi do wyrażeń regularnych. Nie ta tradycja.
Natrafiłem na takie coś: http://www.oooforum.org/forum/viewtopic.phtml?t=21564. Może się przyda.
Jeżeli zaś nie jesteś zmuszony do Basica, możesz rozważyć napisanie makra od razu w JavaScript, ew. w Pythonie. W obu masz obsługę wyrażeń regularnych.
Natrafiłem na takie coś: http://www.oooforum.org/forum/viewtopic.phtml?t=21564. Może się przyda.
Jeżeli zaś nie jesteś zmuszony do Basica, możesz rozważyć napisanie makra od razu w JavaScript, ew. w Pythonie. W obu masz obsługę wyrażeń regularnych.
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
Re: Wyrażenie regularne w kodzie OOo-Basic
Dzięki za wyjaśnienie. Niestety tak Python jak i Java Script nie są moją mocną stroną 
Przykład który podałeś jest ciekawy, chyba by się to dało jakoś zrobić, ale zaczynam się zastanawiać czy gra jest warta zachodu.
Przyszedł mi do głowy inny pomysł na rozwiązanie tego problemu, ale muszę to przetestować.
A przy okazji, czy można się odwołać z poziomu Basica do zakresu komórek, ale nie po adresach tylko po nazwie zakresu? Np. Zaznaczam a1:a10 i nadaję im nazwę Moj_Zakres, czy można się jakoś odwołać do takiego zakresu?
Przykład który podałeś jest ciekawy, chyba by się to dało jakoś zrobić, ale zaczynam się zastanawiać czy gra jest warta zachodu.
Przyszedł mi do głowy inny pomysł na rozwiązanie tego problemu, ale muszę to przetestować.
A przy okazji, czy można się odwołać z poziomu Basica do zakresu komórek, ale nie po adresach tylko po nazwie zakresu? Np. Zaznaczam a1:a10 i nadaję im nazwę Moj_Zakres, czy można się jakoś odwołać do takiego zakresu?
Re: Wyrażenie regularne w kodzie OOo-Basic
Sam znalazłem odpowiedźkrzys59 pisze:...
A przy okazji, czy można się odwołać z poziomu Basica do zakresu komórek, ale nie po adresach tylko po nazwie zakresu? Np. Zaznaczam a1:a10 i nadaję im nazwę Moj_Zakres, czy można się jakoś odwołać do takiego zakresu?
http://www.linuxtopia.org/online_books/ ... range.html
Re: Wyrażenie regularne w kodzie OOo-Basic
Jak można zawrzeć w funkcji IF wyrażenie regularne, coś jakby If x="wyjazd*" then ....
Taki zapis mi nie działa. I nie mam pomysłu jak to zapisać w kodzie.
Proszę o jakąś podpowiedź
OpenOffice.org 3.1 BASIC Guide
accessing Parts of a String
InStr (MyString, SearchString)
searching for a partial string within another string
to change the search so that InStr is case sensitive, add the parameter 0
Left(MyString, Length)
returns the first Length characters of MyString.
Right(MyString, Length)
returns the last Length characters of MyString.
Mid(MyString, Start, Length)
returns first Length characters of MyString as of the Start position.
Len(MyString)
returns the number of characters in MyString.
PS
I jeszcze przykład jak iterować ciąg znaków
Kod: Zaznacz cały
function comma2dot(s as string)
dim i as long
dim result as string
dim c as string
result = ""
for i = 1 to len(s)
c = mid(s, i, 1)
if c = "," then
result = result + "."
else
result = result + c
end if
next i
comma2dot = result
end functionOOo3.1.1 na Ubuntu 9.04
Re: Wyrażenie regularne w kodzie OOo-Basic
Dzięki, że też sam na to nie wpadłem 