PDA

View Full Version : سوال: تعدد تکرار Replace به تعداد همه موارد



FirstLine
سه شنبه 28 آبان 1387, 17:43 عصر
با سلام
یک متن در C# دارم
تعداد زیادی space بیمورد در این متن وجود دارد که باید کل این فضاهای خالی اضافه و Space های اضافه حذف و تبدیل به یک فضای خالی شود و حذف شود.
وقتی از تابع Replace استفاده میکنم فقط یکبار همه Space های دو تایی را به یکی تبدیل میکنه و در این حالت اگه مثلا 10 تا Space کنار هم باشند تبدیل به 5 تا Space میشه و اگر این کار را چند بار تکرار کنم همه فضاهای خالی اضافی حذف میشود .
بخاطر اینکه فقط با یک دستور همه Space های اضافی را حذف کنم باید چه کاری انجام دهم؟
مثلا string1 به string2 تبدیل کنم


string1="it is a Space in My Text"
string2="it is a space in my text"

با تشکر

Behrouz_Rad
سه شنبه 28 آبان 1387, 18:00 عصر
برادر، اون کتاب RegEx ای که واست فرستادم رو مطالعه نکردی؟



(\s+)

Replace Expression رو هم یک کاراکتر فاصله در نظر بگیر.

موفق باشید.

milade
سه شنبه 28 آبان 1387, 18:02 عصر
با regex:

\s+?
پیدا کن و با تابع replace جایگزین!

FirstLine
چهارشنبه 29 آبان 1387, 10:34 صبح
با سلام
از لطف و راهنمایی شما سپاسگزارم.
البته هنوز توی اول کتاب موندم. دستتون درد نکنه کتاب خیلی خوبیه. انشا.. عاقبت بخیر بشی.
با کد


Input_String = Regex.Replace(Input_String, @"(\s+)", " ");

or

int int_Len = Input_String.Length;
do
{
int_Len = Input_String.Length;
Input_String = Input_String.Replace(" ", " ");
} while (int_Len != Input_String.Length);


میتونم این کار را انجام بدهم .
یه سوال : بهتره که این کار را با Replace و دستورات C# انجام بدهم یا با Regular Exp. ؟
آیا فرقی میکنه؟ با کدوم بهتره؟
با تشکر

Behrouz_Rad
چهارشنبه 29 آبان 1387, 13:26 عصر
RegEx تمیزتر، کوتاه تر و با کلاس تره ;) ضمن اینکه RegEx، پس از بار اول اجرا، Compile میشه (در صورتی که Option رو بر روی Compile قرار بدی) و در دفعات بعد سریعتر اجرا میشه.

موفق باشید.

milade
چهارشنبه 29 آبان 1387, 13:34 عصر
جواب رو استاد راد دادن!
ولی این پست که تا حدودی اف هست بابت عذر خواهیه
چون دیروز هی به پستها جواب میدادم و اون موقعی که من پست دادم هنوز استاد ننوشته بودن(وقتی من صفحه رو باز کردم جوابی نبود)اومدم پست دادم و سریع رفتم وگرنه ما جسارت نمی کنیم روی حرف استاد راد حرف بزنیم
موفق باشید