PDA

View Full Version : سوال: تفكيك و استخراج يك عدد از يك عبارت



pedram_ns
شنبه 13 شهریور 1389, 15:17 عصر
سلام
ادرس يك عكس رو به ادرس زير دارم چطور اعداد 13 و 16 رو ازش جدا كنم و هر كدوم رو در يك متغير ذخيره كنم؟

images/13-16.gif


با اين كد به اين عبارت رسيدم ايا مي شه با كدي ديگه خود نام عكس رو خوند؟

image = image1.ImageUrl

Ali_M.Eghbaldar
شنبه 13 شهریور 1389, 15:26 عصر
سلام
با کد زیر می تونی البته زیاد جالب نیست همینطوری سریع نوشتم :

Response.Write("images/12-16.gif".Substring(7, 2))
Response.Write("images/12-16.gif".Substring(10, 2))

می تونم بپرسم می خوای چی کار کنی؟

pedram_ns
شنبه 13 شهریور 1389, 15:32 عصر
راستش براي يك نقشه اون رو به قطعات كوچك بريدم و بر اساس عدد سطر وستون اون نام گذاري كردم 13 سطر و 16 ستون اين عكس در تصوير بزرگ نقشه است.
حالا بعد از نمايش تصاوير چند پيكان گذاشتم تا در نقشه بشه حركت كرد براي اين كار بايد سطر و ستون تصوير وسط رو بدست بيارم و با اون تصاوير رو يك ستون حركت بدم. واسه اين مي خوام.
ولي بعضي از اعداد تك عدد و بعضي دو عدديه و اين كد شما براي همه جواب نميده؟
نمي شه يطوري خود نام عكس رو بگيرم و اون قسمت .gif رو حذف كنم؟

Behrouz_Rad
شنبه 13 شهریور 1389, 15:45 عصر
string pattern = @"images/(\d+)-(\d+)\.gif";
string path = "images/13-16.gif";
int num1 = 0;
int num2 = 0;

Regex regEx = new Regex(pattern, RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
Match match = regEx.Match(path);
if (match.Success)
{
num1 = int.Parse(match.Groups[1].Value);
num2 = int.Parse(match.Groups[2].Value);
}

Response.Write(string.Format("num1 is: {0} and num2 is: {1}", num1, num2));

silverfox
شنبه 13 شهریور 1389, 15:47 عصر
4تا آخر که پسوند و نقطه هست که می ره. images/ هم که ثابته می ره یه string واست می مونه ***-*** مثلا حالا split کن با "-" 2 تا عددت می مونه دیگه!البته اگه همه به این شکل images/13-16.gif باشند و فقط رقماش تعدادش فرق بکنه!
ادیت:موقعی که می نوشتم پست بالایی نبود!لطف کردن توضیح کامل تر رو دادن دیگه!

soroush_vs
پنج شنبه 05 خرداد 1390, 19:51 عصر
واسه این کد اقای راد (Behrouz_Rad) اینم لازمه : using System.Text.RegularExpressions;

behiunforgiven
جمعه 06 خرداد 1390, 17:12 عصر
string pattern = @"images/(\d+)-(\d+)\.gif";
string path = "images/13-16.gif";
int num1 = 0;
int num2 = 0;

Regex regEx = new Regex(pattern, RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
Match match = regEx.Match(path);
if (match.Success)
{
num1 = int.Parse(match.Groups[1].Value);
num2 = int.Parse(match.Groups[2].Value);
}

Response.Write(string.Format("num1 is: {0} and num2 is: {1}", num1, num2));



بهترین پاسخ همینه که آقای راد فرمودند، کلا سعی کن برای راه حل همه چیز یه روتین کلی پیدا کنی که اگه جای دیگه هم خواستی استفاده کنی بتونی اون رو استفاده کنی، در این زمینه ها استفاده از عبارات با قاعده همیشه بهترین راه حل هستش.