PDA

View Full Version : انتخاب قسمتی از متن



elmira_63
شنبه 18 تیر 1390, 17:25 عصر
با سلام
من یک رشته متنی متغیر از تاریخ شمسی دارم مثل زیر
1390/01/01
1390/1/1
1390/1/15
1390/12/1
همانطور که می بینید حالت های مختلفی به وجود می آید ، حال چگونه می توان عدد سال ، ماه و روز را از این رشته ها جدا کرد ؟؟

clover
شنبه 18 تیر 1390, 17:33 عصر
سلام
این یه راهش هست:

int year = 0;
int month = 0;
int day = 0;

Match match;

if (Regex.IsMatch(date, @"^((0?[1-9]|[12][0-9]|3[01])[- /.](0?[1-9]|1[012])[- /.](13|14)?\d{2})|((13|14)\d{2}[- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01]))$"))
{
match = Regex.Match(date, @"^((0?[1-9]|[12][0-9]|3[01])[- /.](0?[1-9]|1[012])[- /.]((13|14)?\d{2}))|(((13|14)\d{2})[- /.](0?[1-9]|1[012])[- /.](0?[1-9]|[12][0-9]|3[01]))$");

if (match.Groups[1].Success)
{
day = Convert.ToInt32(match.Groups[2].Value);
month = Convert.ToInt32(match.Groups[3].Value);

if (match.Groups[5].Success)
{
year = Convert.ToInt32(match.Groups[4].Value);
}
else
{
year = Convert.ToInt32(string.Format("{0}{1}", persianCalendar.GetYear(DateTime.Now) / 100, match.Groups[4].Value));
}
}
else
{
day = Convert.ToInt32(match.Groups[10].Value);
month = Convert.ToInt32(match.Groups[9].Value);
year = Convert.ToInt32(match.Groups[7].Value);
}
}
else
{
throw new Exception("Invalid Date Expression");
}

aminghaderi
شنبه 18 تیر 1390, 20:25 عصر
با سلام
من یک رشته متنی متغیر از تاریخ شمسی دارم مثل زیر
1390/01/01
1390/1/1
1390/1/15
1390/12/1
همانطور که می بینید حالت های مختلفی به وجود می آید ، حال چگونه می توان عدد سال ، ماه و روز را از این رشته ها جدا کرد ؟؟
سلام و درود به تمام برنامه نويسان ايران زمين
لغمه رو دور سر نچرخونيد ، تاريخ هم يه رشته محسوب مي شه و شما مي تونيد با توابع موجودي كه براي رشته ها وجود داره كل رشته رو به هر صورتي كه مد نظر هست تجزيه كنيد.
يه راهي كه خودم ازش استفاده مي كنم عبور از روي تمام خونه هاي ارايه رشته و پيدا كردن كاراكتر جدا كننده (اينجا / كاراكتر جدا كننده هست) و تفكيك اونها.

موفق و مايد باشيد.

elmira_63
یک شنبه 19 تیر 1390, 08:15 صبح
بله دقیقا منم همین رو می خوام
اگه ممکنه یه نمونه کد برام بزارید در این رابطه

afshinmu
دوشنبه 20 تیر 1390, 21:30 عصر
بله دقیقا منم همین رو می خوام
اگه ممکنه یه نمونه کد برام بزارید در این رابطه

این همه کد و دردسر نمی خواد .

مثال :



string date="1390-01-01";
DateTime dt = Convert.ToDateTime(date);
int year = dt.Year;
int month = dt.Month;
int day = dt.Day;
. . .



و هزاران تابع مختلف دیگر

ali_mnkt
دوشنبه 20 تیر 1390, 22:02 عصر
دوست عزیز از متد split که مربوط به رشته هاست استفاده کن