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

مشاهدة النسخة كاملة : انتقاء عددا بشرط


ثامر أبو بلقيس
16-04-2017, 09:06 PM
السلام عليكم ورحمة الله وبركاته

واثق بأن استفساري سيكون بسيطا للغاية

لدي سلاسل عددية كثيرة

أحببت أن أستخلص من كل عدد الأرقام بدء من الرقم 2 و اهمال ما دونه

مثال :
لدي العدد 54872123 اريد الناتج يبدأ من عند المعبأ بالأزرق لأنها أول 2
ويكون الناتج : 123

مثال آخر :
لدي 3145720 يكون الناتج 0

فرقم 2 كل مرة و يكون في منزلة مغايرة أي غير ثابت مع طول العدد غير الثابت هو الآخر

وهناك مرات يكون العدد مدمج مع تسميات مثال : 3145720151 _ thameur هنا الناتج المأمول 0151 بغض النظر عن الكتابة thameur تكون يمينا أو يسارا
شكــــــرا :abc_050:

ياسرهتهت
16-04-2017, 11:10 PM
بسم الله الرحمن الرحيم
محاولة

num = "54872123"
len = String.Length(num);
mark = String.Find(num, "2", 1, false);
int = String.Mid(num, 1, mark-1);
fract = String.Mid(num, mark+1, len-mark);
int = String.ToNumber(int);
fract = String.ToNumber(fract);
Dialog.Message("Notice", "ما بعد الرقم 2"..int.."\r\n".."ما قبل الرقم 2 "..fract, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);

موفق بإذن الله ... لك مني أجمل تحية
:abc_152::abc_138::abc_152:

.

ياسرهتهت
16-04-2017, 11:20 PM
بسم الله الرحمن الرحيم
يمكن ايضا بأستخدام الاضافة Action Extension

NPE = AE.StringDelimitedToTable(Input.GetText("P"), "2");
Dialog.Message("Notice", NPE[1]);
Dialog.Message("Notice", NPE[2]);



موفق بإذن الله ... لك مني أجمل تحية .
:abc_138::abc_138:

ثامر أبو بلقيس
17-04-2017, 12:37 AM
بسم الله الرحمن الرحيم
محاولة

num = "54872123"
len = String.Length(num);
mark = String.Find(num, "2", 1, false);
int = String.Mid(num, 1, mark-1);
fract = String.Mid(num, mark+1, len-mark);
int = String.ToNumber(int);
fract = String.ToNumber(fract);
Dialog.Message("Notice", "ما بعد الرقم 2"..int.."\r\n".."ما قبل الرقم 2 "..fract, MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);

موفق بإذن الله ... لك مني أجمل تحية
:abc_152::abc_138::abc_152:

.

مشكـــور جدا

فالمطلوب أي نعم هو المعبر عنه بالجزئية
التالية من كودك :
num = " 3145720151 _ thameur "
len = String.Length(num);
mark = String.Find(num, "2", 1, false);
---int = String.Mid(num, 1, mark-1);
fract = String.Mid(num, mark+1, len-mark);
--int = String.ToNumber(int);
fract = String.ToNumber(fract);
--Dialog.Message("Notice",int);
Dialog.Message("Notice",fract);

أعطى نتائج ممتازة مع الأمثلة المطروحة لكن مع هذا المثال قد أطلب تعديل لينتج المأمول أي 0151 أي ما بعد الــ 2 و إهمال الكتابة غير عددية :abc_138:

ثامر أبو بلقيس
17-04-2017, 12:41 AM
بسم الله الرحمن الرحيم
يمكن ايضا بأستخدام الاضافة Action Extension

NPE = AE.StringDelimitedToTable(Input.GetText("P"), "2");
Dialog.Message("Notice", NPE[1]);
Dialog.Message("Notice", NPE[2]);



موفق بإذن الله ... لك مني أجمل تحية .
:abc_138::abc_138:

الجزئية التي تهمني هي :
NPE = AE.StringDelimitedToTable(Input.GetText("Input1"), "2");
Dialog.Message("Notice", NPE[2]);

لا تعطي نتائج صحيحة إلا في حالة ما بعد الــ 2 إلا رقما واحدا :abc_139:

المـهاجر
17-04-2017, 12:57 AM
السلام عليكم ورحمة الله وبركاته
Mohager = string.match(" 3145720151 _ thameur " , "2(%d+)")
Dialog.Message("Notice", Mohager);

ثامر أبو بلقيس
17-04-2017, 12:58 AM
السلام عليكم ورحمة الله وبركاته
Mohager = string.match(" 3145720151 _ thameur " , "2(%d+)")
Dialog.Message("Notice", Mohager);


هو المأمول و المقصود ومحل الاستفسار :abc_152:

في حالة عدد لوحده لا يهم كتابة المزدوجتين :abc_022:

المـهاجر
17-04-2017, 01:05 AM
في حالة عدد لوحده لا يهم كتابة المزدوجتين :abc_022:

لم افهم ماذا تقصد ؟
:abc_152:

ثامر أبو بلقيس
17-04-2017, 01:20 AM
p = string.match(3145720151, '2(%d+)')

Dialog.Message("Notice", p);

المـهاجر
17-04-2017, 01:31 AM
اللوا لا تفرق بين المزدوجة " و المفردة ' بأى حال من الأحوال
موفق

ثامر أبو بلقيس
17-04-2017, 01:38 AM
ليس ذاك القصد بل قصدت كتابة الرقم 3145720151 بدون مزدوجة أو مفردة

مشكـــور جدا :abc_138:

المـهاجر
17-04-2017, 01:53 AM
ليس ذاك القصد بل قصدت كتابة الرقم 3145720151 بدون مزدوجة أو مفردة

مشكـــور جدا :abc_138:

كلام سليم و من اساسيات التعبير عن المتغيرات
لا يشذ عنها سوى حالة كتابة ارقام تبدأ بصفر من اليسار
هذه فقط لا نستطيع كتابتها الا فى صورة سترنج مثل "0100000000"