[SOLVED] Wyrażenie regularne w kodzie OOo-Basic

Dyskusje dotyczące tworzenia makropoleceń, pisania skryptów oraz programowania przy użyciu UNO
krzys59
Posty: 79
Rejestracja: pt cze 19, 2009 2:59 pm

[SOLVED] Wyrażenie regularne w kodzie OOo-Basic

Post autor: krzys59 »

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ź
Ostatnio zmieniony ndz kwie 25, 2010 10:16 pm przez quest-88, łącznie zmieniany 1 raz.
Powód: Zmiana tytułu
Jan_J
Posty: 4653
Rejestracja: pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Wyrażenie regularne w kodzie OOo-Basic

Post autor: Jan_J »

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.
JJ
LO (26.2) ∙ Python (3.13|3.10) ∙ Unicode 17 ∙ LᴬTEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Rocky|CentOS)
krzys59
Posty: 79
Rejestracja: pt cze 19, 2009 2:59 pm

Re: Wyrażenie regularne w kodzie OOo-Basic

Post autor: krzys59 »

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?
krzys59
Posty: 79
Rejestracja: pt cze 19, 2009 2:59 pm

Re: Wyrażenie regularne w kodzie OOo-Basic

Post autor: krzys59 »

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?
Sam znalazłem odpowiedź :-) może się komuś przyda
http://www.linuxtopia.org/online_books/ ... range.html
mg2
Posty: 170
Rejestracja: czw sty 28, 2010 9:20 pm

Re: Wyrażenie regularne w kodzie OOo-Basic

Post autor: mg2 »

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 function
OOo3.1.1 na Ubuntu 9.04
krzys59
Posty: 79
Rejestracja: pt cze 19, 2009 2:59 pm

Re: Wyrażenie regularne w kodzie OOo-Basic

Post autor: krzys59 »

Dzięki, że też sam na to nie wpadłem :oops:
ODPOWIEDZ