16 Kasım 2013 Cumartesi

Function Strarray

Uzun zaman önce yazdığım bu kod, benim gibi alt alta değil de yan yana yazmanın pratikliğine inandığınız da size fazlasıyla yardımcı olacaktır.
Strsub fonksiyonunu tam anlamıyla kullanabiliyorsanız, yazdığım bu fonksiyonu da rahatlıkla kullanabilirsiniz. Strsub bir yazı bütününü harf harf ele alırken, Strarray yazı bütünündeki virgülleri ele alır.
Bir çok yerde kullanabilir ve işinizi kolaylaştırabilirsiniz.


[FUNCTION strarray]
local._array = <argn1>
local._endar = <eval (<argn1>+<argn2>)-1>

IF (<argn1> >= <argv>)
   local._array = 0
   local._endar = <eval <argn2>-1>
ENDIF

IF (<argn1> < 0)
   local._array = <eval <argv>+<argn1>>
   local._endar = <eval (<local._array>+<argn2>)-1>
ENDIF

IF (<argn2> == 0) || (<local.endar> >= <argv>)
   local._endar = <eval <argv>-1>
ENDIF

FOR <local._array> <local._endar>
   local._return .= ,<argv[<local._for>]>
ENDFOR

IF (<local._array> == 0)
   local._return = <streat <streat <streat <local._return>>>>
ELSE
   local._return = <streat <local._return>>
ENDIF

RETURN <local._return>

Kullanım örnekleri
Örnek yazı bütününü, virgüllere ayırıp denemek için kendimize bir <tag> alarak başlayabiliriz.

tag.uotools lorem, ipsum, dolor, sit, amet

[FUNCTION doit]
say <strarray 0 1 <tag.uotools>>
Gösterilen sonuç: lorem

  • Gösterilecek sonucu belirlemek için birinci ve ikinci koşul değerlerini değiştirebilirsiniz.
  • Birinci koşul kaçıncı değerden başlayacağına yararken, ikinci koşul sonuçta kaç değer olacağını belirler.

Değer sonuç listesi 1 (lorem, ipsum, dolor, sit, amet için)
0 1 lorem
0 2 lorem, ipsum
0 3 lorem, ipsum, dolor
0 4 lorem, ipsum, dolor, sit
0 5 lorem, ipsum, dolor, sit, amet

  • İkinci koşul ile birinci koşulun toplamı, virgülle ayrılan kelime sayısından büyükse metin tam sonuçlanır. (örnek A)
  • Sadece birinci koşul eksi değer olabilir. İkinci koşul eksi değer olamaz.
  • İkinci koşul 0 (sıfır) ise, birinci koşula denk gelenden sonra metin tam sonuçlanır. (örnek B)

Değer sonuç listesi 2 (lorem, ipsum, dolor, sit, amet için)
1 1 ipsum
1 3 ipsum, dolor, sit
0 0 lorem, ipsum, dolor, sit, amet (örnek B)
2 0 dolor, sit, amet (örnek B)
2 1 dolor
2 2 dolor, sit
2 3 dolor, sit, amet
2 4 dolor, sit, amet (örnek A)
1 9 ipsum, dolor, sit, amet (örnek A)

Birinci koşul için eksi değerler
Eksi değer, metni tersten sıralatmak içindir. Strsub mantığı ile aynı olduğundan bu özelliği de eklemeyi doğru buldum. Kullanım yeri artık size kalıyor.

[FUNCTION doit]
say <strarray -1 1 <tag.uotools>>
Gösterilen sonuç: amet

Değer sonuç listesi 3 (lorem, ipsum, dolor, sit, amet için)
-1 1 amet
-2 1 sit
-2 2 sit, amet
-4 2 ipsum, dolor, sit
-4 3 ipsum, dolor, sit, amet
-5 4 lorem, ipsum, dolor, sit
-5 5 lorem, ipsum, dolor, sit, amet
-5 0 lorem, ipsum, dolor, sit, amet
-5 1 lorem
-5 2 lorem, ipsum


  • Birinci koşul, sadece virgülle ayrılan kelime sayısından büyükse, ilk virgülle başlayan değer sonuçlanır. (örnek C)
  • İkinci koşul ile birinci koşulun düzden sıralamasının toplamı, virgülle ayrılan kelime sayısından büyükse metin tam sonuçlanır. (örnek D)

Değer sonuç listesi 4 (lorem, ipsum, dolor, sit, amet için)
-7 1 lorem (örnek C)
-9 2 lorem, ipsum (örnek C)
-9 0 lorem, ipsum, dolor, sit, amet (örnek C)
-5 6 lorem, ipsum, dolor, sit, amet (örnek D)
-5 8 lorem, ipsum, dolor, sit, amet (örnek D)
-4 9 ipsum, dolor, sit, amet (örnek D)
-8 8 lorem, ipsum, dolor, sit, amet (örnek C) ve (örnek D)
-7 9 lorem, ipsum, dolor, sit, amet (örnek C) ve (örnek D)

Sonuç olarak strarray fonksiyonu
Kullanım alanı bir hayli geniş olmakla birlikte, işinizi de o denli kolaylaştırabilecek bir fonksiyondur. Kullanımına alıştığınız da, sistemlerinizi bu fonksiyon ile birlikte sadeleştirip daha anlaşılır hale getirebilirsiniz.

Hiç yorum yok:

Yorum Gönder