PDA

View Full Version : يك متد كه string را بگيره و هر پرانتز باز و بسته را trim كنه



sabz12
یک شنبه 25 مرداد 1394, 10:27 صبح
تو رچباكس يك سري مطالب انگلیسی دارم می خواستم ببینم میشه هر پرانتز باز و بسته و هرچه داخلش هست را فاصله بینش را از بین برد در صورتی که اگر دوتا پرانتز پشت سر هم اومد یا سه تا یا بیشتر بینش یک فاصله باشه؟!
مثلا
(ali)
( (ali) )
( ( (ali) ) )
سه تا بالای درست وپاینی اشتباه
(((ali)))
می خوام یک باتن بزارم و بازدنش به این صورت در بیاد همه کلمات رچباکس .
یک نظری بدید که یک جرقه ای باشه برای شروع مرسی

mehdi.safavie
یک شنبه 25 مرداد 1394, 10:46 صبح
ببخشید به VB.NET نوشتم:لبخند:


string x = " ( ( ( (ali) ) ) ) ";
x = x.Replace(" (","(");
x = x.Replace(") ",")");
MessageBox.Show(x);

sabz12
یک شنبه 25 مرداد 1394, 10:55 صبح
مرسی که توجه کردید این همون چیز ی که اول به زهن میرسه ولی باید چطور بهش بفهمونم که جلو پرانتز حرف بود به هم بچسبون اگر پرانتز بود فاصله بیفته یا اینکه اگر جلو پرانتز پرانتز بود فاصله اگر غیر پرانتز به هم بچسبونه؟!

mehdi.safavie
یک شنبه 25 مرداد 1394, 11:07 صبح
داداش چیزی که میخوای ساده هست ، ولی میشه یه مثال بزاری من گیج شدم

sabz12
یک شنبه 25 مرداد 1394, 11:17 صبح
پست اول مثال زدم کل رچباکس را بگیره و بر اساس پرانتز به هم بچسبانه ولی اگر بیش از یک پرانتز پشت سر هم بیفته ،فقط پرانتز باز و بسته ای که حرف داخلش هست به هم بچسبه ،و بقیه فاصله بینشون باشه.
مثلا
(ali) + ( (reza) )


بالای درست وپاینی اشتباه
(ali) + ((reza))

mehdi.safavie
یک شنبه 25 مرداد 1394, 11:24 صبح
یعنی زمانی که یک رشته داخل پرانتز بود ، تمامیه پرانتز های بیرون اون رو Trim کنه ؟
یعنی : ( ( reza ) )
باید بشه : ((reza))
؟

sabz12
یک شنبه 25 مرداد 1394, 11:24 صبح
من فقط ( (ali) + ( (reza) را زدم چرا اینها اضافه شد؟! <font color="#333333">n

sabz12
یک شنبه 25 مرداد 1394, 11:26 صبح
یعنی زمانی که یک رشته داخل پرانتز بود ، تمامیه پرانتز های بیرون اون رو Trim کنه ؟
یعنی : ( ( reza ) )
باید بشه : ((reza))
؟
دقیا برعکسش باید بشه :( ( reza ) )

mehdi.safavie
یک شنبه 25 مرداد 1394, 11:36 صبح
خب کاری نداره که داداش
شما کد هایی که من دادم رو دقت کردید اصلا ؟

x = x.Replace(") ",")");

تو این کد گفته شده " )" رو پیدا کن و با بدون فاصله یعنی ")" جایگزینش کن
خب شما دستور رو به یکی از این تغییرش بده

x = x.Replace("((", " ( (");
x.Replace("(((" , " ( ( (");

mehdi.safavie
یک شنبه 25 مرداد 1394, 11:39 صبح
ببین شما تو خود VS یا اصلا Word و یا همه نرم افزار هایی که کار با متن رو داره میتونی از Replace استفاده کنی .
تو VS وقتی داری کد نویسی میکنی Ctrl + F رو بزن ، دو تا تب داره برو تب دوم میبینی مربوط به Replace هست
تو Text اول مقداری که باید جست و جو بشه رو مینویسی و تو Text دوم مقداری که باید جایگزین مقدار اول بشه رو مینویسی.
با این کار شما تمام متن ها رو با متن جدید Replace ( جایگزین ) کردید .

حالا یه پرانتز باشه دو تا سه تا یا هر چی اصلا هر چی باشه .
مثلا شما تو Word میخواید هر جا کلمه 'بسم تعالی' نوشته شده رو عوض کنی به بسم الله الرحمن الرحیم
با این کار تمامیه بسم تعالی ها به بسم الله الرحمن الرحیم تغییر میکنه .

به کد ها نگاه کن ، جای این که فقط کد ها رو کپی کنی ، درکشون کن که کار باهاش برات آسون بشه . نه فقط کپی پیست .

sabz12
یک شنبه 25 مرداد 1394, 11:51 صبح
درست خوب منظورم را فهمیدی من یک رچباکس دارم که پر از پرانتز هست معلوم نیست که یکی است یا 5 باید این جوری بزن

x = x.Replace("((", " ( (");
x.Replace("(((", " ( ( (");
x.Replace("((((", " ( ( ( (");
x.Replace("(((((", " ( ( ( ( (");
x.Replace("((((((", " ( ( ( ( ( (");

تازه پرانتز بسته هم هست
در ضمن می خوام پرانتزی که داخلش مطلب است به هم بچسبه

mehdi.safavie
یک شنبه 25 مرداد 1394, 12:57 عصر
دوست من ؟
شما اگر میخواید برنامه نویسی رو یاد بگیرید باید اول درک کردن کد ها رو یاد بگیرید .

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

sabz12
یک شنبه 25 مرداد 1394, 15:23 عصر
درست دوست عزیز متد Replace را میشه دید چطور درست شده تا درک درستی داشته باشیم؟ من فقط می دونم این متد اولی را میگیره و دومی جای گزین میکنه مثلا من 4خط کد را زدم اگر دقت کنید دو خط اخر تکرار شده که درست کار میکنه و اگر دو خط اخر کامند بشه دوچار مشکل میشه و اونی که می خواهیم نمیشه، دو خط اخر کلید معما بود.
واقعا شما درست گفتید درمورد درست درک کردن و هر نظری بدهید با جان دل پذیراهستم.
مرسی

ژیار رحیمی
یک شنبه 25 مرداد 1394, 16:13 عصر
شما کافیه ابتدا پردانتز های بار رو با رسته خالی و سپس پرانتز های بسته هم این کار و انجام بدی و در پایان فضا های خالی رو حذف کنی

var str = "((ert) (dfg))";
str = str.Replace("(", "").Replace(")","").Replace(" ","").Trim();