PDA

View Full Version : سوال: تابع Split و سفارشی سازی این دستور



morteza norouzi
یک شنبه 28 مهر 1392, 09:23 صبح
سلام
من میخام یکسری نوشته رو برحسب سیمی کولن ; از هم جدا کنم و داخل آرایه بریزم. تا اینجا هیچ مشکلی نیست اما بعد از اینکه نوشته بر حسب ; جدا میشه خود ; از بین میره
میخام طوری بشه که خود ; هم داخل آرایه ذخیره بشه
ممنون

hamid_hr
یک شنبه 28 مهر 1392, 10:11 صبح
اين اصولي نيست ولي جواب ميده

string str = "dfdgdfg;dfgdfgdfg;dfgdfgdfgfhfgh;geertyty";
str= str.Replace(";", ";.");
string[] tmp = str.Split('.');

morteza norouzi
یک شنبه 28 مهر 1392, 10:31 صبح
بله حق با شماست! اما دیگه چاره ای نیست از طرفی هم فقط خروجی برام مهمه!
به هر حال از شما ممنونم اقا حمید گل :)

mmd2009
یک شنبه 28 مهر 1392, 14:01 عصر
با سلام

شما میتونید از Regex (http://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex.aspx)استف اده کنید ، چون در چنین کارهایی واقعا چیزی بهتر از Regex من سراغ ندارم.

به طور مثال ، همون مثالی که در بالا زده شده رو میتونید بدین صورت بنوسید :


string input = "dfdgdfg;dfgdfgdfg;dfgdfgdfgfhfgh;geertyty";
string[] split = new Regex(@"(?<=;)").Split(input);
foreach (var s in split)
{
Console.WriteLine(s);
}

/*
output :
dfdgdfg;
dfgdfgdfg;
dfgdfgdfgfhfgh;
geertyty
*/


البته به روش های مختلف دیگه ای هم میشد این رو نوشت ، که شما میتونید در این مورد جستجو بکنید و مطالب بهتری هم پیدا بکنید.

موفق باشید

morteza norouzi
یک شنبه 28 مهر 1392, 21:15 عصر
سلام! ممنون از پاسخ شما
میشه اگه براتون زحمتی نیست این تکه از کد رو برام توضیح بدید یعنی چی؟
(@"(?<=;)")
در مورد سایر چیزها هم سوالاتی دارم که بنا به فرموده شما سرچ میزنم!
ممنون

mmd2009
یک شنبه 28 مهر 1392, 23:17 عصر
این یک اعلان positive lookbehind هست که ساختارش بدین صورت هستش :


(?<=text)


که در مثالی که بالا زدم ، text ما میشه ";"

شیوه کارش اینطوریه که همیشه به عقبش نگاه میکنه یا به عبارتی پیشوند براش مهمه ، که در مثالی که زدیم یعنی match میشه با هر عبارتی که یک کاراکتر ";" در جلوش داره. با استفاده از این اعلان میتونید ، الگوهای مختلف و پیچیده تری رو مدیریت بکنید. البته همیشه کار کردن باهاش و توضیح دادنش سخته.

موفق باشید