Rozdzielanie informacji - wyrażenia regularne

0

Proszę was o pomoc. Piszę dość duży program i mam kłopot przy rozdzieleniu ciągu znaków.
Mam na przykład string:

jakis_tekst1-jakis_tekst2

i chciałbym odczytać z niego wartości jakis_tekst1 oraz jakis_tekst2.
Wartość tego stringa będzie się zmieniała, więc pytanie brzmi:
Jak odczytać ciąg znaków (liter/cyfr) stojących przez myślnikiem (-) oraz za nim?
Nie jestem jakimś profesjonalnym programistą, jeszcze się uczę, nie mam za dużo czasy dlatego pytam was.
Sądzę, że można to rozwiązać korzystając Wyrażenia Regularne, ale nie mam o tym żadnego pojęcia.
Proszę o pomoc, ewentualnie jakiś kurs z wyrażeniami regularnymi.\

Pozdrawiam, Piotr

0

Do tak prostego przypadku nie są potrzebne wyrażenia regularne.

var s:string;
    lstr,rstr:string;
    kreska:integer;

begin
  lstr:='';
  rstr:='';
  s:='ala ma kota-ala ma asa';
  kreska:=pos('-',s);
  if kreska>0 then
  begin
    lstr:=copy(s,1,kreska-1);
    rstr:=copy(s,kreska+1,maxint);
  end;
0

Proszę jeszcze o odpowiedź na moje pytanie w tym wątku:
http://4programmers.net/Forum/641806?f=1#id641806

PS.. Dzięki Ci Azarien

0
Azarien napisał(a)

Do tak prostego przypadku nie są potrzebne wyrażenia regularne.

A o optymalizacji słyszałeś ?

Po co tyle zmiennych ?
Po co "zerujesz" łańcuchy ?

0

A co ? Jest jeszcze jakiś sposób ?

0
writen napisał(a)

A co ? Jest jeszcze jakiś sposób ?

np. ExtractStrings

0

Po co tyle zmiennych ?
Którą, poza lstr i rstr jako wyjściowymi, i s jako wejściową, byś wyrzucił? Jedyna zmienna pomocnicza jest użyta czterokrotnie, co chyba uzasadnia jej użycie.

Jeśli nie zauważyłeś, jest to po prostu kawałek kodu, a nie gotowa funkcja PodzielStringaZKreskaPosrodku().

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.