asmazh Posted July 8, 2012 Share Posted July 8, 2012 Es Selamünaleyküm. AutoİT'de [color="#0000FF"]_StringBetween()[/color] diye bir kod mevcut. Görevi: Bir 'string'de 2 karakterin arasında bulunan stringleri almak. Şöyle açımlarsam daha iyi anlarsınız. [color="#FF0000"]$String[/color] [color="#FF0000"]= [/color][color="#708090"]"Bu bir denemedir dostum"[/color] [color="#FF0000"]$StringBetween[/color] [color="#FF0000"]= [/color][color="#0000FF"]_StringBetween[/color]([color="#FF0000"]$String[/color], [color="#708090"]"Bu"[/color],[color="#708090"] "Dostum"[/color]) Burada $StringBetween " bir denemedir " dönecektir. Bu kodun karşılığı AMS'de yok mu acaba? Ya da yapılamaz mı? Ayrıca AutoİT'de bulunan ve büyük bir derya olan [color="#0000FF"]StringRegExp()[/color] ve [color="#0000FF"]StringRegExpReplace()[/color] kodları AMS'de yok mu? Eğer bu kodlar yoksa AMS ile string işleri pek yapılamaz diye düşünüyorum. İnşallah öyle değildir. Teşekkür ederim. Quote Link to comment Share on other sites More sharing options...
Bitmap Posted July 8, 2012 Share Posted July 8, 2012 (edited) [code] function String.Between(string,ilk,son) if(string ~="") then ilk_s = String.Find(string, ilk, 1); if(ilk_s ~= -1) then ilk_c = #ilk; son_s = String.Find(string, son, 1); son_c = #son; return String.Mid(string, ilk_s+ilk_c, son_s-(ilk_s+ilk_c)) else return 0; end else return 0; end end [/code] Kullanımı: [code]String.Between(string,ilk,son);[/code] işinize yarar sanırım.. Regexler lua kalıbıyla kullanılıyor.. ams nin kendisinde yok ancak lua kalıpları çalışıyor.. Edited July 8, 2012 by Kazım Quote Link to comment Share on other sites More sharing options...
asmazh Posted July 8, 2012 Author Share Posted July 8, 2012 (edited) Çok sağ ol Kazım. Bunu bir de Array (tablo) şeklinde alamazmıyız. Diyeceksin ki, ne gereği var? Şöyle açıklayayım. Elimizde şöyle bir string olsun: Kerbela=0001 Kalaba=0002 Kol kola=0003 Kukla=0004 Kullanıcı ilk karakteri "la=" gösterdi. Son karakteri de "@crlf" yani "\n" böyle gösterdi. Görüldüğü gibi bu şartlara uyan 4 string var. Bunları tablo şeklinde almak istiyorum. Ben AMS'de yeni bir insanım. Şu kodunu da tam olarak anlayamadım: #ilk . Buradaki "#" karakteri 'string'in karakter sayısını mı istiyor? Edited July 8, 2012 by asmazh Quote Link to comment Share on other sites More sharing options...
Bitmap Posted July 8, 2012 Share Posted July 8, 2012 (edited) [quote name='asmazh' date='08 July 2012 - 20:01 ' timestamp='1341766873' post='1219745'] Çok sağ ol Kazım. Bunu bir de Array (tablo) şeklinde alamazmıyız. Diyeceksin ki, ne gereği var? Şöyle açıklayayım. Elimizde şöyle bir string olsun: Kerbela=0001 Kalaba=0002 Kol kola=0003 Kukla=0004 Kullanıcı ilk karakteri "la=" gösterdi. Son karakteri de "@crlf" yani "\n" böyle gösterdi. Görüldüğü gibi bu şartlara uyan 4 string var. Bunları tablo şeklinde almak istiyorum. Ben AMS'de yeni bir insanım. Şu kodunu da tam olarak anlayamadım: #ilk . Buradaki "#" karakteri 'string'in karakter sayısını mı istiyor? [/quote] regex lerle ilgili bir kaynak bulsam bu sorunun cevabını direkt vereceğim. araştırıyorum. tablo olarak döndürmeyi bi deneyeyim . 2. soru ise evet # karakter sayısını alır Edited July 8, 2012 by Kazım Quote Link to comment Share on other sites More sharing options...
KintaRo Posted July 8, 2012 Share Posted July 8, 2012 aynen öyle. [quote]sIsim = "ahmet"; Dialog.Message("Uzunluk", #sIsim)[/quote] dersen sana ahmet kelimesinin uzunluğunu yani 5'i verecektir. Quote Link to comment Share on other sites More sharing options...
Bitmap Posted July 8, 2012 Share Posted July 8, 2012 [code] function String.Between(string,ilk,son) tFinded={}; if(string ~="") then ilk_s =1; index=1; while(ilk_s>0) do ilk_s = String.Find(string, ilk, index); son_s = String.Find(string, son, index); if(ilk_s>0) then find = String.Mid(string, ilk_s+#ilk, son_s-(ilk_s+#ilk)); Table.Insert(tFinded, Table.Count(tFinded)+1,find); end index = son_s+#son end return tFinded; else return 0; end end [/code] Regexleri bulana kadar idare eder.. bi hatası çıkana kadar hatasız çalışıyor .. tablo biçiminde döndürür... Şunda Denedim [code]a = "en1yor en2yor en3yor en4yor yor"; c = String.Between(a,"en", "yor"); for i,v in pairs(c) do Dialog.Message("",v); end [/code] Kolay Gelsin Quote Link to comment Share on other sites More sharing options...
blackman12 Posted July 8, 2012 Share Posted July 8, 2012 farklı satırlardan oluşan bir string yerine, satır satır okutup string between yaptırırsan, tabloya dökmek daha kolay olur. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.