المساعد الشخصي الرقمي

مشاهدة النسخة كاملة : -- ® من طرائق البحث في القيم النصية ® --


ثامر أبو بلقيس
02-07-2017, 05:26 PM
بسم الله الرحمن الرحيم
سؤالي محول على الموقع بغية إيجاد أكثر عدد حلول لطرح مفاده :
• لدي قيم أو قيمة نصية : مكونة من أرقام و أحرف لاتينية
(غير العربية) وقد تكون هناك مسافات فارغة
ولا تحتوي على رموز
• المطلوب : هو عند تحديد معيار معين للبحث يتم استخلاص موقع
تواجد المبحوث عنه في تلك القيمة
• مثال : لدي القيمة
str = "254822524022THAMEUR82"
المبحوث عنه هو القيمة النصية 2
كيف أحصل على نتائج البحث
• توضيح:
https://b.top4top.net/m_548lep2w1.bmp
• ملحوظة هامة : عدم استعمال كل ما تعلق بالمصفوفات أو تخزين خارجي
أفكاركم شباب .. بالتوفيق:abc_138:

عبد الهادي بهاب
02-07-2017, 07:48 PM
هذه محاولة

https://e.top4top.net/p_548hy41u1.png


str = "254822524022THAMEUR82";
f=""; gh= 0 ;
for i=1, String.Length(str) do
fi = String.Find(str, "2", i, false);
if fi ~= -1 and fi ~= gh then gh = fi;
f = f.."\r\n"..gh; end end

Dialog.Message("",f);

ثامر أبو بلقيس
02-07-2017, 08:52 PM
حل جميل جدا .... متوقع ذلك و من الجيد التغلب على المعيار في حالة تواجده مرتين بجانب بعض

هل من حلول آخرى :abc_139:

ثامر أبو بلقيس
03-07-2017, 03:29 PM
و قد نتخلى عن دالة البحث
str = "254822524022THAMEUR82"
n = ""
for i = 1 , string.len(str) do
res = String.Mid(str, i,1);
if res == "2" then
n =n ..i.."\r\n"
end;end
Dialog.Message("",n);

عبد الهادي بهاب
03-07-2017, 04:21 PM
و قد نتخلى عن دالة البحث
str = "254822524022THAMEUR82"
n = ""
for i = 1 , string.len(str) do
res = String.Mid(str, i,1);
if res == "2" then
n =n ..i.."\r\n"
end;end
Dialog.Message("",n);

تفكير ذكي جدا يعني في كل مرة ناحذ الحرف الاول من السترينح فان كان هو ما نحيث عنه نسجل رقم الدالة التكرارية .........جميل جدا ربي يجازيكم هيرا
------------------
هل فيه حل اخر باستعمال المصفوفة ............فكرت بدالة تستخرج كل غناصر السترينج ثم نقارنها عنصرا عنصرا بما نريده ......
استعملت gsub مع a% لكنها تستخرج فقط الاحرف و تهمل الارقام

ثامر أبو بلقيس
03-07-2017, 04:43 PM
str = "254822524022THAMEUR82"
x=0 f=""
for w in string.gfind(str, ".") do
x=x+1
if w =="2" then
f=f..x.."\r\n"
end end
Dialog.Message("",f);

ثامر أبو بلقيس
03-07-2017, 06:59 PM
gsub للاستبدال و يمكن كتابة مثال ربما تقصد sub وهي نفسها String.Mid
ان كان هو المقصود قد نكتب
str ="254822524022THAMEUR82"
my_table = {};
---
for i =string.len(str),1,-1 do
k=string.sub(str,i,i)
if k=="2" then
Table.Insert(my_table, 1, i);
result = Table.Concat(my_table, "\r\n", 1, TABLE_ALL);
end;end
Dialog.Message("Notice", result);

ثامر أبو بلقيس
03-07-2017, 09:21 PM
str = "254822524022THAMEUR82"
str = "a"..str
k="2"
------
natiga= ""
-----
for i = 1,String.Length(str) do
name = string.match(str, '(%P+)'..k)
if name ~= nil then
natiga = natiga ..#name.."\r\n"
str=name
end;end

Dialog.Message("",natiga);

عبد الهادي بهاب
04-07-2017, 07:09 PM
:abc_085::abc_085::abc_085::abc_085:

ما شاء الله روعة
لكل من الحلول درس يجب ان نتعلم منه

شكرا جزيلا